zoukankan      html  css  js  c++  java
  • elasticsearch6.3 自动补齐suggest java代码

    package com.sinosafe.essuggest.service.Impl;

    import com.sinosafe.essuggest.provider.Impl.EsSingleCon;
    import com.sinosafe.essuggest.service.EsSuggestService;
    import org.elasticsearch.action.search.SearchRequestBuilder;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.transport.TransportClient;
    import org.elasticsearch.search.suggest.Suggest;
    import org.elasticsearch.search.suggest.SuggestBuilder;
    import org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import java.util.ArrayList;
    import java.util.List;

    /**
    * @Author : zengxiaoyi
    * @E-mail :
    * @Date : 2018/6/29
    */
    @Service
    public class EsSuggestServiceImpl implements EsSuggestService {

    @Autowired
    private EsSingleCon esSingleCon;

    /**
    * es get suggest
    * @param index 索引
    * @param type type,用的是es6.3,可以不写type,因为index下只允许一个type
    * @param field 字段
    * @param context 内容
    * @return
    */
    @Override
    public List getSuggest(String index, String type, String field, String context) {
    List<String> result = new ArrayList<>();
    TransportClient transportClient=EsSingleCon.transportClient;
    SearchRequestBuilder searchRequestBuilder = transportClient.prepareSearch(index);
    //completion suggest
    CompletionSuggestionBuilder completionSuggestionBuilder = new CompletionSuggestionBuilder(field);
    //前缀查询 每次返回最多10条数据
    completionSuggestionBuilder.prefix(context).size(10);
    //"mysuggest"自定义名字
    SuggestBuilder suggestBuilder = new SuggestBuilder().addSuggestion("mysuggest", completionSuggestionBuilder);
    SearchResponse searchResponse = searchRequestBuilder.suggest(suggestBuilder).execute().actionGet();
    //保存es返回结果
    List<? extends Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option>> list = searchResponse
    .getSuggest().getSuggestion("mysuggest").getEntries();
    if (list == null) {
    return null;
    }
    else {
    //转为list保存结果字符串
    for (Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option> e : list) {
    for (Suggest.Suggestion.Entry.Option option : e) {
    result.add(option.getText().toString());
    System.out.println(option.getText().toString());
    }
    }
    }
    System.out.println(result);
    return result;

    }
    }

  • 相关阅读:
    4259. 残缺的字符串
    BZOJ3451. Tyvj1953 Normal
    BZOJ3509. [CodeChef] COUNTARI
    BZOJ3527: [Zjoi2014]力
    BZOJ2194. 快速傅立叶之二
    Educational Codeforces Round 69 (Rated for Div. 2) A~D Sloution
    hibernate对单表的增删改查
    spring中的AOP
    spring笔记二
    struts2的验证
  • 原文地址:https://www.cnblogs.com/zengxiaoyi36/p/9257478.html
Copyright © 2011-2022 走看看