List<Map<String, Object>> rivers = new ArrayList<Map<String, Object>>(); int i = 0; for (SearchHit hit : searchResponse.getHits().hits()) { Map<String, Object> source = new HashMap<String, Object>(); String riverName = hit.getType();
@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; }
public boolean hasAccessToProject(String projectUuid) { SearchHits hits = esClient.prepareSearch(FOO_INDEX) .setTypes(FOO_TYPE) .setQuery(QueryBuilders.boolQuery() .must(QueryBuilders.termQuery(FooIndexDefinition.FIELD_PROJECT_UUID, projectUuid)) .filter(authorizationTypeSupport.createQueryFilter())) .get() .getHits(); List<String> names = Arrays.stream(hits.hits()) .map(h -> h.getSource().get(FooIndexDefinition.FIELD_NAME).toString()) .collect(MoreCollectors.toList()); return names.size() == 2 && names.contains("bar") && names.contains("baz"); } }
if (!query.hasLimit() && hits.totalHits() >= maxResultsSize) log.warn("Query result set truncated to first [{}] elements for query: {}", maxResultsSize, query); List<String> result = new ArrayList<String>(hits.hits().length); for (SearchHit hit : hits) { result.add(hit.id());
@Test public void search_with_max_limit() { ComponentDto project = newPrivateProjectDto(newOrganizationDto()); ComponentDto file = newFileDto(project, null); List<IssueDoc> issues = new ArrayList<>(); for (int i = 0; i < 500; i++) { String key = "I" + i; issues.add(newDoc(key, file)); } indexIssues(issues.toArray(new IssueDoc[] {})); IssueQuery.Builder query = IssueQuery.builder(); SearchResponse result = underTest.search(query.build(), new SearchOptions().setLimit(Integer.MAX_VALUE)); assertThat(result.getHits().hits()).hasSize(SearchOptions.MAX_LIMIT); }
@Test public void paging() { ComponentDto project = newPrivateProjectDto(newOrganizationDto()); ComponentDto file = newFileDto(project, null); for (int i = 0; i < 12; i++) { indexIssues(newDoc("I" + i, file)); } IssueQuery.Builder query = IssueQuery.builder(); // There are 12 issues in total, with 10 issues per page, the page 2 should only contain 2 elements SearchResponse result = underTest.search(query.build(), new SearchOptions().setPage(2, 10)); assertThat(result.getHits().hits()).hasSize(2); assertThat(result.getHits().getTotalHits()).isEqualTo(12); result = underTest.search(IssueQuery.builder().build(), new SearchOptions().setOffset(0).setLimit(5)); assertThat(result.getHits().hits()).hasSize(5); assertThat(result.getHits().getTotalHits()).isEqualTo(12); result = underTest.search(IssueQuery.builder().build(), new SearchOptions().setOffset(2).setLimit(0)); assertThat(result.getHits().hits()).hasSize(10); assertThat(result.getHits().getTotalHits()).isEqualTo(12); }
@Override public List<JSONObject> convert(SearchResponse searchResponse) { SearchHit[] hits = searchResponse.getHits().hits(); final List<JSONObject> list = Lists.newArrayListWithExpectedSize(hits.length); for (SearchHit hit : hits) {
/** * The hits of the search request (based on the search type, and from / size provided). */ public SearchHit[] getHits() { return hits(); }
@Override public Iterator<SearchHit> iterator() { return Arrays.stream(hits()).iterator(); }
@Override public DcSearchHit getAt(int position) { List<DcSearchHit> list = new ArrayList<DcSearchHit>(); for (SearchHit hit : this.searchHits.hits()) { list.add((DcSearchHit) DcSearchHitImpl.getInstance(hit)); } return list.get(position); }
@Override public Iterator<DcSearchHit> iterator() { List<DcSearchHit> list = new ArrayList<DcSearchHit>(); for (SearchHit hit : this.searchHits.hits()) { list.add((DcSearchHit) DcSearchHitImpl.getInstance(hit)); } return list.iterator(); } }
@Override public DcSearchHit[] getHits() { List<DcSearchHit> list = new ArrayList<DcSearchHit>(); for (SearchHit hit : this.searchHits.hits()) { list.add((DcSearchHit) DcSearchHitImpl.getInstance(hit)); } return list.toArray(new DcSearchHit[0]); }
private List<SpanModel> parseResponse(final SearchResponse response) { // 处理返回结果 final List<SpanModel> spans = new LinkedList<SpanModel>(); for (final SearchHit hit : response.getHits().hits()) { final String doc = hit.getSourceAsString(); try { spans.add(JSON.parseObject(doc, SpanModel.class)); } catch (JSONException ex) { log.error("failed load data {}, error {}", doc, ex); continue; } } return spans; }
private List<AssetXO> retrieveAssets(final SearchResponse response, final UriInfo uriInfo) { // get the asset specific parameters MultivaluedMap<String, String> assetParams = getAssetParams(uriInfo); return Arrays.stream(response.getHits().hits()) .flatMap(hit -> extractAssets(hit, assetParams)) .collect(toList()); }
private boolean assertNoSearchTarget(SearchHits hits) { for (SearchHit hit : hits.hits()) { assert hit.getShard() == null : "expected null but got: " + hit.getShard(); } return true; }
@GET public Page<ComponentXO> search( @QueryParam("continuationToken") final String continuationToken, @Context final UriInfo uriInfo) { QueryBuilder query = searchUtils.buildQuery(uriInfo); int from = tokenEncoder.decode(continuationToken, query); SearchResponse response = searchService.search(query, emptyList(), from, getPageSize()); List<ComponentXO> componentXOs = Arrays.stream(response.getHits().hits()) .map(this::toComponent) .collect(toList()); return new Page<>(componentXOs, componentXOs.size() == getPageSize() ? tokenEncoder.encode(from, getPageSize(), query) : null); }
@Override public int doScoll() { rsp = client.prepareSearchScroll(scrollId()).setScroll(TimeValue.timeValueMinutes(keepTimeInMinutes)). execute().actionGet(); return rsp.getHits().hits().length; }
/** * Emit one tuple per {@code SearchHit} for given search query * * @see com.datatorrent.api.InputOperator#emitTuples() */ @Override public void emitTuples() { SearchResponse response = getSearchRequestBuilder().execute().actionGet(); for (SearchHit hit : response.getHits().hits()) { T tuple = convertToTuple(hit); if (tuple != null) { outputPort.emit(tuple); } } }
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); }