我想问你,是否有办法在ElasticSearch中过滤SearchRequestBuilder srb。 我有一个由公司组成的指数。每家公司都有一份英文文件,可能有其他语言的文件。所以我想带来所有拥有选定文件的公司用户语言,如果这家公司没有这种语言的文件,请带给我英语。
有办法做到这一点吗? 提前谢谢。
答案 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)
}
希望这有帮助