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;

    }
    }

  • 相关阅读:
    Perl的运算符号字符
    windows xp 使用远程桌面时的关机/重新启动方法
    抵御TCP的洪水
    远程桌面连接中的常见问题 连接上就断开
    批量kill mysql进程
    Linux如何查看硬盘型号和缓存
    Apache Rewrite 规则详解
    nginx 内置变量大全
    大数据量分页存储过程效率测试附代码
    ASP.Net 更新页面输出缓存的几种方法(包括用户控件,iframe,页面缓存等)
  • 原文地址:https://www.cnblogs.com/zengxiaoyi36/p/9257478.html
Copyright © 2011-2022 走看看