过滤来自ElasticSearch的响应数据

时间:2017-07-25 14:36:45

标签: elasticsearch

我想问你,是否有办法在ElasticSearch中过滤SearchRequestBuilder srb。 我有一个由公司组成的指数。每家公司都有一份英文文件,可能有其他语言的文件。所以我想带来所有拥有选定文件的公司用户语言,如果这家公司没有这种语言的文件,请带给我英语。

有办法做到这一点吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

更新回答以使用滚动API返回所有公司。

QueryBuilder qb = termQuery("Document", "English");

SearchResponse scrollResp = client.prepareSearch(test)
    .addSort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC)
    .setScroll(new TimeValue(60000))
    .setQuery(qb)
    .setSize(100).execute().actionGet(); //max of 100 hits will be returned for each scroll
//Scroll until no hits are returned
do {
     for (SearchHit hit : scrollResp.getHits().getHits()) {
    //Handle the hit...
     }

    scrollResp =client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new 
    TimeValue(60000)).execute().actionGet();
   } 
   while(scrollResp.getHits().getHits().length != 0); 
// Zero hit mark the end of the scroll and the while loop.

如果没有找到其他语言的文档,你可以使用if块来返回带有英文文档的公司。

像这样的东西

if(SearchResponse1 == null) //searchResponse for Non english language
{
(Search for documents in English)
}

希望这有帮助