8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

ElasticSearch 8 CompletionSuggestion 替换

Ali Alghamdi 1月前

20 0

我的任务是将代码从 ElasticSearch 7 升级到 ES 8。大部分工作都很顺利,直到我遇到 CompletionSuggestion 代码。索引中的每条记录都有此字段:\'suggest&

我的任务是将代码从 ElasticSearch 7 升级到 ES 8。大部分工作都很顺利,直到我遇到 CompletionSuggestion 代码。

索引中的每个记录都有此字段:\'suggest\' : {\'ty​​pe\' : \'completion\',\'analyzer\' : \'simple\',\'preserve_separators\' : true,\'preserve_position_increments\' : true,\'max_input_length\' : 50}

当用户开始在搜索字段中输入内容时,我们会根据上述“建议”字段返回的结果,向他们提供可能使用的搜索词列表。

我们当前的代码:` List result = new ArrayList<>();CompletionSuggestionBuilder csb = new CompletionSuggestionBuilder(\'suggest\');csb.text(query).size(100); // query 是传入的搜索文本

    SearchSourceBuilder ssb = new SearchSourceBuilder();
    SearchRequest sr = new SearchRequest(index);
    ssb.suggest(new SuggestBuilder()
            .addSuggestion("Suggestion", csb));
    sr.source(ssb);
    SearchResponse resp = rhlClient.search(sr, RequestOptions.DEFAULT);

    if (resp.getSuggest().size() == 0) {
        return result;
    }
    
    Suggest.Suggestion<? extends Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option>> suggestionBldr = resp.getSuggest().getSuggestion("Suggestion");
    Iterator<? extends Suggest.Suggestion.Entry.Option> iterator =
            suggestionBldr.iterator().next().getOptions().iterator();
    // We then just loop through the iterator and build the result

`

我曾尝试使用新的 CompletionSuggester 以及其他新选项,但我所见/尝试过的每个教程或操作方法都返回完整记录的列表,而不是像我们之前得到的搜索词列表。

如何让 ES8 返回建议术语列表,而不是完整记录?

帖子版权声明 1、本帖标题:ElasticSearch 8 CompletionSuggestion 替换
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Ali Alghamdi在本站《elasticsearch》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: