三人行必有我师

求助:elasticsearch5 suggester 功能怎么用?

Elasticsearch | 作者 mn_1127 | 发布于2017年03月15日 | 阅读数:5511

由于之前用的是solr,现在迁移到elasticsearch上了,solr中的suggester功能使用比较熟悉,但是elasticsearch5中怎么使用suggester 还没有完全领会其中的意思,所以求助社区大神,用java api的方式 怎么在elasticsearch5.x中实现suggester的功能! 最好能给出点实例代码! 小弟在此谢过了!
已邀请:

mn_1127 - 80后it男

赞同来自:

可以给一个java api的方式的吗?

mn_1127 - 80后it男

赞同来自:


/**
     * 自动补全查询功能
     * 注意字段book_suggest必须是completion类型的
     */
    @test
    public void testCompletionSuggest() {
        CompletionSuggestionBuilder suggestionBuilder = new CompletionSuggestionBuilder("book_suggest");
        suggestionBuilder.analyzer("ik_smart");
        suggestionBuilder.text("特工");
        suggestionBuilder.size(200);
        SuggestBuilder sb = new SuggestBuilder();
        sb.addSuggestion("my-suggest-1", suggestionBuilder);
        SearchResponse resp = client.prepareSearch().setIndices("ytxt").setTypes("book_info")
                .setQuery(QueryBuilders.matchAllQuery()).suggest(sb).get();
        Suggest sugg = resp.getSuggest();
        CompletionSuggestion suggestion = sugg.getSuggestion("my-suggest-1");
        List<CompletionSuggestion.Entry> list = suggestion.getEntries();
        for (int i = 0; i < list.size(); i++) {
            List<?> options = list.get(i).getOptions();
            for (int j = 0; j < options.size(); j++) {
                if (options.get(j) instanceof Option) {
                    Option op = (Option) options.get(j);
                    System.out.println(op.getScore()+"--"+op.getText());
                }
            }
        }
    }

要回复问题请先登录注册