【发布时间】:2020-09-23 07:39:50
【问题描述】:
我在 Java 中将 Completition 建议器用于自动完成应用程序,我能够使用 JAVA api 从搜索响应中提取建议文本。在检查原始响应时,我看到建议响应包含 _source 数据(完整文档而不仅仅是 Suggest 字符串)。如何从 Suggest Search 响应中提取源数据?
请在下面找到我用来获取建议文本的代码 -
SearchRequest searchRequest = new SearchRequest("my_entitiy");
CompletionSuggestionBuilder suggestionBuilder = new CompletionSuggestionBuilder("nameSuggest");
suggestionBuilder.size(10).prefix(input).skipDuplicates(true);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.suggest(
new SuggestBuilder().addSuggestion(SUGGESTION_NAME, suggestionBuilder));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = elasticClient.search(searchRequest, RequestOptions.DEFAULT);
Suggest suggest = searchResponse.getSuggest();
Suggest.Suggestion<Suggest.Suggestion.Entry<Suggest.Suggestion.Entry.Option>> suggesition =
suggest.getSuggestion(SUGGESTION_NAME);
List<String> suggestionList = new ArrayList<>();
for (Suggest.Suggestion.Entry<Suggest.Suggestion.Entry.Option> entry : suggesition.getEntries()) {
for(Suggest.Suggestion.Entry.Option option:entry.getOptions()){
suggestionList.add(option.getText().toString());
}
}
在选项中,很少有方法可用于提取分数、文本和突出显示。是否可以从选项中获取 _source 数据?我看到了一个 toXContent 函数,是否可以使用它来获取源数据?
sn-p 上面是将建议的字符串保存到一个列表中,我想知道是否有可能获得完整的 Doc JSON。
【问题讨论】:
标签: java elasticsearch search