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社を連れてくるでしょうが、私はすべての企業を連れて行きたいと思います。もう1つは、SearchResponseをどのようにマージするかです。 –
スクロールAPIを使用して、すべての企業を取得することができます。更新された回答を参照してください。「SerachResponse」のいずれかをマージすることによって、 – Dungeon
された文書に役立ちますか?あるいは、彼らはあるIDによって企業と結びついた別々の文書ですか? – Joanna