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;

    }
    }

  • 相关阅读:
    Chrome等浏览器下出现net::ERR_BLOCKED_BY_CLIENT的解决办法
    document.readyState和document.DOMContentLoaded判断DOM的加载完成
    CSS实现进度条
    H5案例分享:移动端滑屏 touch事件
    Passive Event Listeners——让页面滑动更加流畅的新特性
    禁止蒙层底部页面跟随滚动
    跨域Ajax请求时是否带Cookie的设置
    HTML5 元素拖动
    浅谈程序员的英语学习
    (转载)史上最详细的docker学习手册
  • 原文地址:https://www.cnblogs.com/zengxiaoyi36/p/9257478.html
Copyright © 2011-2022 走看看