Refine search
private List<EventExecution> mapEventExecutionsResponse(SearchResponse response) throws IOException { SearchHit[] hits = response.getHits().getHits(); List<EventExecution> executions = new ArrayList<>(hits.length); for (SearchHit hit : hits) { String source = hit.getSourceAsString(); EventExecution tel = objectMapper.readValue(source, EventExecution.class); executions.add(tel); } return executions; }
private List<EventExecution> mapEventExecutionsResponse(SearchResponse response) throws IOException { SearchHit[] hits = response.getHits().getHits(); List<EventExecution> executions = new ArrayList<>(hits.length); for (SearchHit hit : hits) { String source = hit.getSourceAsString(); EventExecution tel = objectMapper.readValue(source, EventExecution.class); executions.add(tel); } return executions; } }
private List<SearchHit> sendElasticsearchQuery(ElasticsearchQueryBuilder queryBuilder) { SearchResponse response = getSearchResponse(queryBuilder); if (response.getHits().getTotalHits() > maxHits) { throw new PrestoException(ELASTICSEARCH_MAX_HITS_EXCEEDED, format("The number of hits for the query (%d) exceeds the configured max hits (%d)", response.getHits().getTotalHits(), maxHits)); } ImmutableList.Builder<SearchHit> result = ImmutableList.builder(); while (true) { for (SearchHit hit : response.getHits().getHits()) { result.add(hit); } response = getScrollResponse(queryBuilder, response.getScrollId()); if (response.getHits().getHits().length == 0) { break; } } return result.build(); }
private List<Message> mapGetMessagesResponse(SearchResponse response) throws IOException { SearchHit[] hits = response.getHits().getHits(); TypeFactory factory = TypeFactory.defaultInstance(); MapType type = factory.constructMapType(HashMap.class, String.class, String.class); List<Message> messages = new ArrayList<>(hits.length); for (SearchHit hit : hits) { String source = hit.getSourceAsString(); Map<String, String> mapSource = objectMapper.readValue(source, type); Message msg = new Message(mapSource.get("messageId"), mapSource.get("payload"), null); messages.add(msg); } return messages; }
private List<Message> mapGetMessagesResponse(SearchResponse response) throws IOException { SearchHit[] hits = response.getHits().getHits(); TypeFactory factory = TypeFactory.defaultInstance(); MapType type = factory.constructMapType(HashMap.class, String.class, String.class); List<Message> messages = new ArrayList<>(hits.length); for (SearchHit hit : hits) { String source = hit.getSourceAsString(); Map<String, String> mapSource = objectMapper.readValue(source, type); Message msg = new Message(mapSource.get("messageId"), mapSource.get("payload"), null); messages.add(msg); } return messages; }
public SearchResult(SearchResponse resp) { SearchHits hits = resp.getHits(); this.total = hits.getTotalHits(); results = new ArrayList<>(hits.getHits().length); for (SearchHit searchHit : hits.getHits()) { if (searchHit.getSourceAsMap() != null) { results.add(searchHit.getSourceAsMap()); } else if (searchHit.getFields() != null) { Map<String, DocumentField> fields = searchHit.getFields(); results.add(toFieldsMap(fields)); } } }
private Set<ComperableHitResult> simpleOneTimeQueryEach() { SearchHit[] firstTableHits = this.builder.getFirstSearchRequest().get().getHits().getHits(); if(firstTableHits == null || firstTableHits.length == 0){ return new HashSet<>(); } Set<ComperableHitResult> result = new HashSet<>(); fillComperableSetFromHits(this.fieldsOrderFirstTable, firstTableHits, result); SearchHit[] secondTableHits = this.builder.getSecondSearchRequest().get().getHits().getHits(); if(secondTableHits == null || secondTableHits.length == 0){ return result; } removeValuesFromSetAccordingToHits(this.fieldsOrderSecondTable,result,secondTableHits); return result; }
@Override public void run() throws IOException, SqlParseException { SearchResponse firstResponse = this.multiQueryBuilder.getFirstSearchRequest().get(); SearchHit[] hits = firstResponse.getHits().getHits(); List<SearchHit> unionHits = new ArrayList<>(hits.length); fillInternalSearchHits(unionHits,hits,this.multiQueryBuilder.getFirstTableFieldToAlias()); SearchResponse secondResponse = this.multiQueryBuilder.getSecondSearchRequest().get(); fillInternalSearchHits(unionHits,secondResponse.getHits().getHits(),this.multiQueryBuilder.getSecondTableFieldToAlias()); int totalSize = unionHits.size(); SearchHit[] unionHitsArr = unionHits.toArray(new SearchHit[totalSize]); this.results = new SearchHits(unionHitsArr, totalSize,1.0f); }
@Override public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) { List<String> result = new ArrayList<String>(); for (SearchHit searchHit : response.getHits().getHits()) { String id = searchHit.getId(); result.add(id); } if (result.size() > 0) { return new AggregatedPageImpl<T>((List<T>) result, response.getScrollId()); } return new AggregatedPageImpl<T>(Collections.EMPTY_LIST, response.getScrollId()); } };
private List<SearchHit> scrollTillLimit(TableInJoinRequestBuilder tableInJoinRequest, Integer hintLimit) { SearchResponse scrollResp = scrollOneTimeWithMax(client,tableInJoinRequest); updateMetaSearchResults(scrollResp); List<SearchHit> hitsWithScan = new ArrayList<>(); int curentNumOfResults = 0; SearchHit[] hits = scrollResp.getHits().getHits(); if (hintLimit == null) hintLimit = MAX_RESULTS_FOR_FIRST_TABLE; while (hits.length != 0 && curentNumOfResults < hintLimit) { curentNumOfResults += hits.length; Collections.addAll(hitsWithScan, hits); if (curentNumOfResults >= MAX_RESULTS_FOR_FIRST_TABLE) { //todo: log or exception? System.out.println("too many results for first table, stoping at:" + curentNumOfResults); break; } scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(600000)).execute().actionGet(); hits = scrollResp.getHits().getHits(); } return hitsWithScan; }
private List<SearchHit> fetchAllHits(TableInJoinRequestBuilder tableInJoinRequest) { Integer hintLimit = tableInJoinRequest.getHintLimit(); SearchRequestBuilder requestBuilder = tableInJoinRequest.getRequestBuilder(); if (hintLimit != null && hintLimit < MAX_RESULTS_ON_ONE_FETCH) { requestBuilder.setSize(hintLimit); SearchResponse searchResponse = requestBuilder.get(); updateMetaSearchResults(searchResponse); return Arrays.asList(searchResponse.getHits().getHits()); } return scrollTillLimit(tableInJoinRequest, hintLimit); }
/** * Parse the results and return the candidate results */ private CandidateResults parseResults( final SearchResponse searchResponse, final ParsedQuery query, final int limit, final int from, boolean hasGeoSortPredicates ) { final SearchHits searchHits = searchResponse.getHits(); final SearchHit[] hits = searchHits.getHits(); if (logger.isTraceEnabled()) { logger.trace(" Hit count: {} Total hits: {}", hits.length, searchHits.getTotalHits()); } List<CandidateResult> candidates = new ArrayList<>( hits.length ); for ( SearchHit hit : hits ) { CandidateResult candidateResult; candidateResult = parseIndexDocId( hit, hasGeoSortPredicates ); candidates.add( candidateResult ); } final CandidateResults candidateResults = new CandidateResults( candidates, query.getSelectFieldMappings()); // >= seems odd. However if we get an overflow, we need to account for it. if ( hits.length >= limit ) { candidateResults.initializeOffset( from + limit ); } return candidateResults; }
Set<ComperableHitResult> results = new HashSet<>(); SearchHit[] hits = scrollResp.getHits().getHits(); if(hits == null || hits.length == 0){ return new HashSet<>(); hits = scrollResp.getHits().getHits(); hits = scrollResp.getHits().getHits(); if(hits == null || hits.length == 0){ return results; hits = scrollResp.getHits().getHits();
private Query(final String indexName, QueryBuilder queryBuilder, String order_field, int resultCount) { //TODO: sort data using order_field // prepare request SearchRequestBuilder request = elasticsearchClient.prepareSearch(indexName) .setSearchType(SearchType.QUERY_THEN_FETCH) .setQuery(queryBuilder) .setFrom(0) .setSize(resultCount); request.clearRescorers(); // get response SearchResponse response = request.execute().actionGet(); hitCount = (int) response.getHits().getTotalHits(); // evaluate search result SearchHit[] hits = response.getHits().getHits(); this.result = new ArrayList<Map<String, Object>>(hitCount); for (SearchHit hit: hits) { Map<String, Object> map = hit.getSource(); this.result.add(map); } }
List<String> issueKeys = Arrays.stream(result.getHits().getHits()) .map(SearchHit::getId) .collect(MoreCollectors.toList(result.getHits().getHits().length)); Paging paging = forPageIndex(options.getPage()).withPageSize(options.getLimit()).andTotal((int) result.getHits().getTotalHits()); return searchResponseFormat.formatSearch(additionalFields, data, paging, facets);