我想問你,如果有一種方法可以過濾ElasticSearch中的SearchRequestBuilder srb。 我有一個由公司組成的索引。每家公司都有一份英文文檔,並且可能有其他語言的文檔。所以我想把所有有文件的公司從用戶語言中選出來,如果這家公司沒有這種語言的文件給我帶來英文。過濾來自ElasticSearch的響應數據
有沒有辦法做到這一點? 預先感謝您。
我想問你,如果有一種方法可以過濾ElasticSearch中的SearchRequestBuilder srb。 我有一個由公司組成的索引。每家公司都有一份英文文檔,並且可能有其他語言的文檔。所以我想把所有有文件的公司從用戶語言中選出來,如果這家公司沒有這種語言的文件給我帶來英文。過濾來自ElasticSearch的響應數據
有沒有辦法做到這一點? 預先感謝您。
回答更新以返回所有使用滾動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)
}
希望這有助於
如果我設置setSize(1),我會帶1個公司,但我想帶所有公司。第二個是,我如何在一個SearchResponse中合併? –
您可以使用滾動API來獲取所有公司。請參閱更新後的答案。不確定您的意思是「合併到一個SerachResponse中」 – Dungeon
保存在公司列表中的文件?或者他們是否通過某些ID將與公司有關的文件分開? – Joanna