UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Elasticsearch】JavaでMulti-Search APIを使う

JavaでMulti-Search APIを使いたい

www.elastic.co

MultiSearchRequestインスタンスを用意して、通常のSerachRequestをaddしていけばよさそう

MultiSearchRequest multiSearchRequest = new MultiSearchRequest();

SearchRequest firstSearchRequest = new SearchRequest();   
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("user", "kimchy"));
firstSearchRequest.source(searchSourceBuilder);
multiSearchRequest.add(firstSearchRequest);                          

SearchRequest secondSearchRequest = new SearchRequest();  
searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("user", "luca"));
secondSearchRequest.source(searchSourceBuilder);
multiSearchRequest.add(secondSearchRequest);

MultiSearchResponse msearchResponse = client.msearch(multiSearchRequest, RequestOptions.DEFAULT);

レスポンスはmsearchResponse.getResponses()で、addした順に結果が配列になっている