private MultiSearchResponse.Item[] getMultiSearchResult(MultiSearchRequest request) { MultiSearchResponse response; try { response = client.multiSearch(request); } catch (IOException e) { throw new ElasticsearchException("Error for search request: " + request.toString(), e); } MultiSearchResponse.Item[] items = response.getResponses(); Assert.isTrue(items.length == request.requests().size(), "Response should has same length with queries"); return items; }
@Override public MultiSearchResponse newResponse() { return new MultiSearchResponse(); }
MultiSearchResponse(StreamInput in) throws IOException { readFrom(in); }
public static MultiSearchTemplateResponse fromXContext(XContentParser parser) { //The MultiSearchTemplateResponse is identical to the multi search response so we reuse the parsing logic in multi search response MultiSearchResponse mSearchResponse = MultiSearchResponse.fromXContext(parser); org.elasticsearch.action.search.MultiSearchResponse.Item[] responses = mSearchResponse.getResponses(); Item[] templateResponses = new Item[responses.length]; int i = 0; for (org.elasticsearch.action.search.MultiSearchResponse.Item item : responses) { SearchTemplateResponse stResponse = null; if(item.getResponse() != null){ stResponse = new SearchTemplateResponse(); stResponse.setResponse(item.getResponse()); } templateResponses[i++] = new Item(stResponse, item.getFailure()); } return new MultiSearchTemplateResponse(templateResponses); }
Iterator<MultiSearchResponse.Item> it = response.iterator(); for (SearchHit hit : searchResponse.hits.getHits()) { for (InnerHitBuilder innerHitBuilder : innerHitBuilders) {
public static MultiSearchTemplateResponse fromXContext(XContentParser parser) { //The MultiSearchTemplateResponse is identical to the multi search response so we reuse the parsing logic in multi search response MultiSearchResponse mSearchResponse = MultiSearchResponse.fromXContext(parser); org.elasticsearch.action.search.MultiSearchResponse.Item[] responses = mSearchResponse.getResponses(); Item[] templateResponses = new Item[responses.length]; int i = 0; for (org.elasticsearch.action.search.MultiSearchResponse.Item item : responses) { SearchTemplateResponse stResponse = null; if(item.getResponse() != null){ stResponse = new SearchTemplateResponse(); stResponse.setResponse(item.getResponse()); } templateResponses[i++] = new Item(stResponse, item.getFailure()); } return new MultiSearchTemplateResponse(templateResponses); }
Iterator<MultiSearchResponse.Item> it = response.iterator(); for (SearchHit hit : searchResponse.hits.getHits()) { for (InnerHitBuilder innerHitBuilder : innerHitBuilders) {
private int combineResultsFromMultiResponses(List<SearchHit> combinedResults, int totalLimit, int currentCombinedResults, SearchHit[] hits, int currentIndex, MultiSearchRequest multiSearchRequest) { MultiSearchResponse.Item[] responses = client.multiSearch(multiSearchRequest).actionGet().getResponses(); String t1Alias = nestedLoopsRequest.getFirstTable().getAlias(); String t2Alias = nestedLoopsRequest.getSecondTable().getAlias(); for(int j =0 ; j < responses.length && currentCombinedResults < totalLimit ; j++){ SearchHit hitFromFirstTable = hits[currentIndex+j]; onlyReturnedFields(hitFromFirstTable.getSourceAsMap(), nestedLoopsRequest.getFirstTable().getReturnedFields(),nestedLoopsRequest.getFirstTable().getOriginalSelect().isSelectAll()); SearchResponse multiItemResponse = responses[j].getResponse(); updateMetaSearchResults(multiItemResponse); //todo: if responseForHit.getHits.length < responseForHit.getTotalHits(). need to fetch more! SearchHits responseForHit = multiItemResponse.getHits(); if(responseForHit.getHits().length == 0 && nestedLoopsRequest.getJoinType() == SQLJoinTableSource.JoinType.LEFT_OUTER_JOIN){ SearchHit unmachedResult = createUnmachedResult(nestedLoopsRequest.getSecondTable().getReturnedFields(), currentCombinedResults, t1Alias, t2Alias, hitFromFirstTable); combinedResults.add(unmachedResult); currentCombinedResults++; continue; } for(SearchHit matchedHit : responseForHit.getHits() ){ SearchHit searchHit = getMergedHit(currentCombinedResults, t1Alias, t2Alias, hitFromFirstTable, matchedHit); combinedResults.add(searchHit); currentCombinedResults++; if(currentCombinedResults >= totalLimit) break; } if(currentCombinedResults >= totalLimit) break; } return currentCombinedResults; }
private void finish() { listener.onResponse(new MultiSearchResponse(responses.toArray(new MultiSearchResponse.Item[responses.length()]))); } });
Iterator<MultiSearchResponse.Item> it = response.iterator(); for (SearchHit hit : searchResponse.hits.getHits()) { for (InnerHitBuilder innerHitBuilder : innerHitBuilders) {
@Override public void readFrom(StreamInput in) throws IOException { super.readFrom(in); items = new Item[in.readVInt()]; for (int i = 0; i < items.length; i++) { items[i] = Item.readItem(in); } }
@Override public DcItem[] getResponses() { List<DcItemImpl> list = new ArrayList<DcItemImpl>(); for (MultiSearchResponse.Item item : this.multiSearchResponse.getResponses()) { list.add((DcItemImpl) DcItemImpl.getInstance(item)); } return list.toArray(new DcItemImpl[0]); }
@Override public MultiSearchResponse newResponse() { return new MultiSearchResponse(); }
Iterator<MultiSearchResponse.Item> it = response.iterator(); for (SearchHit hit : searchResponse.hits.getHits()) { for (InnerHitBuilder innerHitBuilder : innerHitBuilders) {
@Override public Iterator<DcItem> iterator() { List<DcItem> list = new ArrayList<DcItem>(); for (MultiSearchResponse.Item item : this.multiSearchResponse.getResponses()) { list.add(DcItemImpl.getInstance(item)); } return list.iterator(); } }
@Override public MultiSearchResponse newResponse() { return new MultiSearchResponse(); }
@Override public GetResponse getDelegatedFromInstigator(final MultiSearchResponse searchResponse) { if (searchResponse.getResponses() == null || searchResponse.getResponses().length <= 0) { final Item item = request.getItems().get(0); return new GetResponse(new GetResult(item.index(), item.type(), item.id(), item.version(), false, null, null)); } else if (searchResponse.getResponses().length > 1) { throw new RuntimeException("cannot happen"); } else { final org.elasticsearch.action.search.MultiSearchResponse.Item item = searchResponse.getResponses()[0]; final SearchHit sh = item.getResponse().getHits().getHits()[0]; return new GetResponse(new GetResult(sh.index(), sh.type(), sh.id(), sh.version(), true, sh.getSourceRef(), null)); } } });
@Override public MultiSearchResponse newResponse() { return new MultiSearchResponse(); }
for (int i = 0; i < response.getResponses().length; i++) { final Item item = response.getResponses()[i]; if (item.isFailure()) { LOG.warn("failure response when querying for status {}",
@Override public MultiSearchResponse newResponse() { return new MultiSearchResponse(); }