我正在使用Java API进行弹性搜索。 我需要自动完成功能,为此我使用完成
CompletionSuggestionBuilder compBuilder = new CompletionSuggestionBuilder("suggestapi");
compBuilder.field( field_where_search );
compBuilder.text( text_to_search );
SuggestRequestBuilder suggestRequestBuilder = client.prepareSuggest(index);
suggestRequestBuilder.addSuggestion(compBuilder);
SuggestResponse suggestResponse = suggestRequestBuilder.execute().actionGet();
我得到了正确的答复。现在,我想应用过滤器/查询以及此建议。因此,我只需要为["类型" :"行动"]
我想用#34; BoolFilterBuilder"但没有找到如何将它应用于CompletionSuggestionBuilder。
任何解决方案都将受到高度赞赏。
感谢。
答案 0 :(得分:0)
不,你不能用Completion Suggester做你想做的事。您需要自己过滤结果。
修改强>
您可以更改索引完成建议的方式,每种类型都可以拥有自己的字段。映射看起来像:
{
"movie_drama_suggest":{
"type":"completion"
},
"movie_comedy_suggest":{
"type":"completion"
},
"movie_horror_suggest":{
"type":"completion"
}
}
您需要在您的应用程序中拥有逻辑,以确定在索引期间根据影片的类型使用哪个建议字段。然后在您的查询中,您可以参考特定类型的建议。
CompletionSuggestionBuilder compBuilder = new CompletionSuggestionBuilder("suggestapi");
compBuilder.field("movie_horror_suggest");
compBuilder.text("Ham");