@Test public void testDbsGeoEnrichment() throws IOException, InterruptedException { // wait for Geo Index to be set up int count = 0; while (!Index.indexExists(Constants.GEO_INDEX_TEST, geoClient)) { Thread.sleep(1000); count++; if (count > 30) { break; } } SearchHit responseGeoIndex = searchByAddressInGeodata("Grabenstr. 4", "street").getHits().getAt(0); assertTrue( "Response should contain the field location", responseGeoIndex.getSourceAsString().contains("geocode")); // check geo information was processed while transforming organanisation // data /* TODO: currently not set up for clean tests (no geodata service running) SearchHit responseOrganisationsIndex = searchByAddressInOrganisations("Grabenstr. 4").getHits().getAt(0); assertTrue("Response should contain the field location", responseOrganisationsIndex.getSourceAsString().contains("geo")); assertTrue("Response should contain latitude", responseOrganisationsIndex.getSourceAsString().contains("lat")); assertTrue("Response should contain longitude", responseOrganisationsIndex.getSourceAsString().contains("lon")); */ }
private void indexSearchHit( BulkNodeClient bulkNodeClient, KnapsackPullRequest request, SearchHit hit) throws IOException { IndexRequest indexRequest = new IndexRequest( mapIndex(request, hit.getIndex()), mapType(request, hit.getIndex(), hit.getType()), hit.getId()); for (String f : hit.getFields().keySet()) { switch (f) { case "_parent": indexRequest.parent(hit.getFields().get(f).getValue().toString()); break; case "_routing": indexRequest.routing(hit.getFields().get(f).getValue().toString()); break; case "_timestamp": indexRequest.timestamp(hit.getFields().get(f).getValue().toString()); break; case "_version": indexRequest .versionType(VersionType.EXTERNAL) .version(Long.parseLong(hit.getFields().get(f).getValue().toString())); break; case "_source": indexRequest.source(hit.getSourceAsString()); break; default: indexRequest.source(f, hit.getFields().get(f).getValue().toString()); break; } } if (!hit.getFields().keySet().contains("_source")) { indexRequest.source(hit.getSourceAsString()); } bulkNodeClient.bulkIndex(indexRequest); }
/** * @param req * @return * @throws IOException */ public AgroAutocompleteResponse autocomplete(AgroAutocompleteRequest req) throws IOException { AgroAutocompleteResponse res = new AgroAutocompleteResponse(); // create the SearchRequestBuilder SearchRequestBuilder searchReqBuilder = esClient.prepareSearch("history").setTypes("query"); // setup query QueryBuilder queryBuilder; queryBuilder = QueryBuilders.prefixQuery("query.raw", req.getQuery()); searchReqBuilder.setQuery(queryBuilder); // setup paging searchReqBuilder.setFrom(0); searchReqBuilder.setSize(200); // execute the request and get the response SearchResponse response = searchReqBuilder.execute().actionGet(); // parse the response into AgroAutocompleteResponse Iterator<SearchHit> hitsIter = response.getHits().iterator(); SearchHit hit; int i = 0; while (hitsIter.hasNext() && i < 10) { hit = hitsIter.next(); String source = hit.getSourceAsString(); UserQuery uq = objectMapper.reader(UserQuery.class).readValue(source); if (res.addResult(uq.getQuery())) { i++; } } // add query (meta)data to res res.setTotal(response.getHits().getTotalHits()); res.setTime(response.getTookInMillis()); // ..and return res; }
public static SearchHit[] getFromEs(String value, String fq) { // create a node client Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "esgoodluck").build(); Client client = new TransportClient(settings) .addTransportAddress(new InetSocketTransportAddress("slc08ynb.us.oracle.com", 9300)); String filterTemplate = " \"filter\": {" + "\"bool\": {" + fq + "} }"; String queryStr = "{\"query\": {\"filtered\":{\"query\":{\"multi_match\":{\"query\":\"" + value + "\", \"type\":\"most_fields\",\"fields\":[\"VALUE\",\"VALUE.UNPROCESSED^10\",\"VALUE.VALUE_ST_STEM^5\"]}}," + filterTemplate + "}},\"sort\":[\"_score\",{\"_script\":{\"script\":\"doc['VALUE.ORIGINAL'].value.length()\",\"type\":\"number\"}}]}"; SearchResponse response = client .prepareSearch("latest") .setTypes("latest") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setSource(queryStr) .execute() .actionGet(); System.out.println("query string:" + queryStr); for (SearchHit hit : response.getHits().getHits()) { System.out.println(hit.getId()); System.out.println(hit.getScore()); System.out.println(hit.getSourceAsString()); for (Map.Entry<String, SearchHitField> entry : hit.getFields().entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } return response.getHits().getHits(); }
public List<T> list() { List<T> results = new ArrayList<>(0); try { SearchResponse response = client.prepareSearch(index).setTypes(entity).execute().actionGet(); SearchHits hits = response.getHits(); results = new ArrayList<>(hits.getHits().length); for (SearchHit hit : hits) { String source = hit.getSourceAsString(); if (source == null) { continue; } try { T result = mapper.readValue(source, clazz); result.setId(hit.getId()); results.add(result); } catch (IOException e) { logger.error("Error listing entities of type " + this.entity, e); } } } catch (IndexMissingException e) { logger.error("Error listing entities of type " + this.entity, e); } return results; }
@Test public void requestCoordinates() { SearchHit response = searchByAddressInOrganisations("Universit��tsstr. 33").getHits().getAt(0); assertTrue( "Response should contain the field location", response.getSourceAsString().contains("geo")); }
@Override protected Network processHit(SearchHit hit) throws IOException { InputStream inputStream = new ByteArrayInputStream(hit.getSourceAsString().getBytes()); return objectMapper.readValue(inputStream, Network.class); }