@Override public Iterable<RawQuery.Result<String>> query(RawQuery query, KeyInformation.IndexRetriever informations, BaseTransaction tx) throws BackendException { SearchRequestBuilder srb = client.prepareSearch(indexName); srb.setTypes(query.getStore()); srb.setQuery(QueryBuilders.queryStringQuery(query.getQuery())); srb.setFrom(query.getOffset()); if (query.hasLimit()) srb.setSize(query.getLimit()); else srb.setSize(maxResultsSize); srb.setNoFields(); //srb.setExplain(true); SearchResponse response = srb.execute().actionGet(); log.debug("Executed query [{}] in {} ms", query.getQuery(), response.getTookInMillis()); SearchHits hits = response.getHits(); if (!query.hasLimit() && hits.totalHits() >= maxResultsSize) log.warn("Query result set truncated to first [{}] elements for query: {}", maxResultsSize, query); List<RawQuery.Result<String>> result = new ArrayList<RawQuery.Result<String>>(hits.hits().length); for (SearchHit hit : hits) { result.add(new RawQuery.Result<String>(hit.id(),hit.getScore())); } return result; }
log.debug("Executed query [{}] in {} ms", query.getCondition(), response.getTookInMillis()); SearchHits hits = response.getHits(); if (!query.hasLimit() && hits.totalHits() >= maxResultsSize)
@Override public long getTookInMillis() { return searchResponse.getTookInMillis(); }
@Override @Deprecated public long getTookInMillis() { return super.getTookInMillis(); }
private void logTime(SearchResponse response, long startTime) { if (logger.isDebugEnabled()) { long tookInMillis = (System.nanoTime() - startTime) / 1000000; logger.debug("Rewriting overhead time: {} - {} = {}ms", tookInMillis, response.getTookInMillis(), tookInMillis - response.getTookInMillis()); } } }
@SneakyThrows({ IOException.class }) private <T> FacetedSearchResult<T> toFacetedSearchResult(Class<T> clazz, int from, SearchResponse searchResponse) { // check something found // return an empty object if nothing found if (!somethingFound(searchResponse)) { T[] resultData = (T[]) Array.newInstance(clazz, 0); FacetedSearchResult toReturn = new FacetedSearchResult(from, 0, 0, 0, new String[0], resultData, new HashMap<String, FacetedSearchFacet[]>()); if (searchResponse != null) { toReturn.setQueryDuration(searchResponse.getTookInMillis()); } return toReturn; } FacetedSearchResult facetedSearchResult = new FacetedSearchResult(); fillMultipleDataResult(clazz, searchResponse, facetedSearchResult, from, true); // set data from the query parseAggregations(searchResponse, facetedSearchResult, null); // set aggregations return facetedSearchResult; }
private ElasticsearchGraphQueryIterable<SearchHit> searchResponseToSearchHitsIterable(SearchResponse response) { SearchHits hits = response.getHits(); QueryParameters filterParameters = getParameters().clone(); Iterable<SearchHit> hitsIterable = IterableUtils.toIterable(hits.getHits()); return createIterable(response, filterParameters, hitsIterable, response.getTookInMillis(), hits); }
private ElasticSearchGraphQueryIterable<SearchHit> searchResponseToSearchHitsIterable(SearchResponse response) { SearchHits hits = response.getHits(); QueryParameters filterParameters = getParameters().clone(); Iterable<SearchHit> hitsIterable = IterableUtils.toIterable(hits.hits()); return createIterable(response, filterParameters, hitsIterable, false, false, false, response.getTookInMillis(), hits); }
private ElasticsearchGraphQueryIterable<SearchHit> searchResponseToSearchHitsIterable(SearchResponse response) { SearchHits hits = response.getHits(); QueryParameters filterParameters = getParameters().clone(); Iterable<SearchHit> hitsIterable = IterableUtils.toIterable(hits.hits()); return createIterable(response, filterParameters, hitsIterable, false, false, false, response.getTookInMillis(), hits); }
private ElasticsearchGraphQueryIterable<SearchHit> searchResponseToSearchHitsIterable(SearchResponse response) { SearchHits hits = response.getHits(); QueryParameters filterParameters = getParameters().clone(); Iterable<SearchHit> hitsIterable = IterableUtils.toIterable(hits.getHits()); return createIterable(response, filterParameters, hitsIterable, response.getTookInMillis(), hits); }
private <T> void fillMultipleDataResult(Class<T> clazz, SearchResponse searchResponse, GetMultipleDataResult<T> finalResponse, int from, boolean managePagination) throws IOException { if (managePagination) { int to = from + searchResponse.getHits().getHits().length - 1; finalResponse.setFrom(from); finalResponse.setTo(to); finalResponse.setTotalResults(searchResponse.getHits().getTotalHits()); finalResponse.setQueryDuration(searchResponse.getTookInMillis()); } String[] resultTypes = new String[searchResponse.getHits().getHits().length]; T[] resultData = (T[]) Array.newInstance(clazz, resultTypes.length); for (int i = 0; i < resultTypes.length; i++) { SearchHit hit = searchResponse.getHits().getAt(i); resultTypes[i] = hit.getType(); resultData[i] = hitToObject(hit); } finalResponse.setData(resultData); finalResponse.setTypes(resultTypes); }
private ScrollJsonResult convert(SearchResponse response) { ScrollJsonResult result = new ScrollJsonResult(); result.setData(ResponseUtil.rawMultipleData(response)); result.setScrollId(response.getScrollId()); result.setTotalResults(response.getHits().getTotalHits()); result.setQueryDuration(response.getTookInMillis()); return result; } }
private SearchResponse getSearchResponse(EnumSet<ElasticsearchDocumentType> elementType, int skip, int limit, boolean includeAggregations) { SearchRequestBuilder q = buildQuery(elementType, includeAggregations) .setFrom(skip) .setSize(limit); if (QUERY_LOGGER.isTraceEnabled()) { QUERY_LOGGER.trace("query: %s", q); } SearchResponse searchResponse = q.execute().actionGet(); SearchHits hits = searchResponse.getHits(); if (LOGGER.isDebugEnabled()) { LOGGER.debug( "elasticsearch results %d of %d (time: %dms)", hits.hits().length, hits.getTotalHits(), searchResponse.getTookInMillis() ); } return searchResponse; }
private SearchResponse getSearchResponse(EnumSet<ElasticsearchDocumentType> elementType, int skip, int limit, boolean includeAggregations) { SearchRequestBuilder q = buildQuery(elementType, includeAggregations) .setFrom(skip) .setSize(limit); if (QUERY_LOGGER.isTraceEnabled()) { QUERY_LOGGER.trace("query: %s", q); } SearchResponse searchResponse = q.execute().actionGet(); SearchHits hits = searchResponse.getHits(); if (LOGGER.isDebugEnabled()) { LOGGER.debug( "elasticsearch results %d of %d (time: %dms)", hits.hits().length, hits.getTotalHits(), searchResponse.getTookInMillis() ); } return searchResponse; }
private void setBasicResponseInfo(SearchResponse searchResponse, JdbcSearchResponse<String> jdbcResponse) { jdbcResponse.setFailedShards(searchResponse.getFailedShards()); jdbcResponse.setSuccessfulShards(searchResponse.getSuccessfulShards()); jdbcResponse.setTookInMillis(searchResponse.getTookInMillis()); jdbcResponse.setTotalShards(searchResponse.getTotalShards()); }
@Override public Iterable<RawQuery.Result<String>> query(RawQuery query, KeyInformation.IndexRetriever informations, TransactionHandle tx) throws StorageException { SearchRequestBuilder srb = client.prepareSearch(indexName); srb.setTypes(query.getStore()); srb.setQuery(QueryBuilders.queryString(query.getQuery())); srb.setFrom(0); if (query.hasLimit()) srb.setSize(query.getLimit()); else srb.setSize(maxResultsSize); srb.setNoFields(); //srb.setExplain(true); SearchResponse response = srb.execute().actionGet(); log.debug("Executed query [{}] in {} ms", query.getQuery(), response.getTookInMillis()); SearchHits hits = response.getHits(); if (!query.hasLimit() && hits.totalHits() >= maxResultsSize) log.warn("Query result set truncated to first [{}] elements for query: {}", maxResultsSize, query); List<RawQuery.Result<String>> result = new ArrayList<RawQuery.Result<String>>(hits.hits().length); for (SearchHit hit : hits) { result.add(new RawQuery.Result<String>(hit.id(),hit.getScore())); } return result; }
private SearchResponse getSearchResponse(EnumSet<ElasticsearchDocumentType> elementType, FetchHints fetchHints, int skip, int limit, boolean includeAggregations) { SearchRequestBuilder q = buildQuery(elementType, fetchHints, includeAggregations) .setFrom(skip) .setSize(limit); if (QUERY_LOGGER.isTraceEnabled()) { QUERY_LOGGER.trace("query: %s", q); } SearchResponse searchResponse = checkForFailures(q.execute().actionGet()); SearchHits hits = searchResponse.getHits(); if (LOGGER.isDebugEnabled()) { LOGGER.debug( "elasticsearch results %d of %d (time: %dms)", hits.getHits().length, hits.getTotalHits(), searchResponse.getTookInMillis() ); } return searchResponse; }
private SearchResponse getSearchResponse(EnumSet<ElasticsearchDocumentType> elementType, FetchHints fetchHints, int skip, int limit, boolean includeAggregations) { SearchRequestBuilder q = buildQuery(elementType, fetchHints, includeAggregations) .setFrom(skip) .setSize(limit); if (QUERY_LOGGER.isTraceEnabled()) { QUERY_LOGGER.trace("query: %s", q); } SearchResponse searchResponse = checkForFailures(q.execute().actionGet()); SearchHits hits = searchResponse.getHits(); if (LOGGER.isDebugEnabled()) { LOGGER.debug( "elasticsearch results %d of %d (time: %dms)", hits.getHits().length, hits.getTotalHits(), searchResponse.getTookInMillis() ); } return searchResponse; }
@Override public Iterable<RawQuery.Result<String>> query(RawQuery query, KeyInformation.IndexRetriever informations, BaseTransaction tx) throws BackendException { SearchRequestBuilder srb = client.prepareSearch(indexName); srb.setTypes(query.getStore()); srb.setQuery(QueryBuilders.queryString(query.getQuery())); srb.setFrom(query.getOffset()); if (query.hasLimit()) srb.setSize(query.getLimit()); else srb.setSize(maxResultsSize); srb.setNoFields(); //srb.setExplain(true); SearchResponse response = srb.execute().actionGet(); log.debug("Executed query [{}] in {} ms", query.getQuery(), response.getTookInMillis()); SearchHits hits = response.getHits(); if (!query.hasLimit() && hits.totalHits() >= maxResultsSize) log.warn("Query result set truncated to first [{}] elements for query: {}", maxResultsSize, query); List<RawQuery.Result<String>> result = new ArrayList<RawQuery.Result<String>>(hits.hits().length); for (SearchHit hit : hits) { result.add(new RawQuery.Result<String>(hit.id(),hit.getScore())); } return result; }
public long runQuery(String name, int testNum, String index, long expectedHits, QueryBuilder query) { SearchResponse searchResponse = new CoordinateSearchRequestBuilder(client) .setIndices(index) .setQuery(query) .execute().actionGet(); if (searchResponse.getFailedShards() > 0) { log("Search Failures " + Arrays.toString(searchResponse.getShardFailures())); } long hits = searchResponse.getHits().totalHits(); if (hits != expectedHits) { log("[" + name + "][#" + testNum + "] Hits Mismatch: expected [" + expectedHits + "], got [" + hits + "]"); } return searchResponse.getTookInMillis(); }