• springboot jest链接es


    JestClient是一款基于HTTP实现的ES客户端,在RestHighLevelClient出现之前,它填补了ES缺少HTTP REST接口客户端的空白。JestClient具有一定的ES服务端版本兼容性,支持数据的同步和异步操作,同时,它也提供了索引时和搜索结果的POJO映射机制,即OR-Mapping功能

    依赖配置:

    <!--Jest依赖--> 
    <dependency> 
        <groupId>io.searchbox</groupId> 
        <artifactId>jest</artifactId> 
        <version>6.3.1</version> 
    </dependency> 
    <!--ES依赖--> 
    <dependency> 
        <groupId>org.elasticsearch</groupId> 
        <artifactId>elasticsearch</artifactId> 
        <version>7.10.2</version> 
    </dependency> 

    在application.yml文件中配置ES的连接信息:

    spring:
      elasticsearch:
        jest:
          uris: http://127.0.0.1:9200
          username: 
          password: 

    Jest客户端搜索文档:

    import lombok.Data;
    
    @Data
    public class Hotel {
        String title; //对应于索引中的title
        String city; //对应于索引中的city
        String price; //对应于索引中的price
    }
    @Service
    public class EsHotelService {
    
        @Autowired
        JestClient jestClient;
    
        public List<Hotel> getHotelFromTitle(String keyword) {
            MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("title", keyword);//match搜索
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(matchQueryBuilder);
            Search search = new Search.Builder(searchSourceBuilder.toString()).addIndex("hotel").build();//创建搜索请求
            try {
                JestResult jestResult = jestClient.execute(search);//执行搜索
                if (jestResult.isSucceeded()) {//判断搜索是否成功
                    return jestResult.getSourceAsObjectList(Hotel.class);//将结果封装到Hotel类型的List中
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }
    @Slf4j
    @Api(tags = "EsHotelController")
    @RestController
    public class EsHotelController {
    
        @Autowired
        EsHotelService esHotelService;
    
        @GetMapping(value = "/getHotelFromTitle")
        public String getHotelFromTitle() {
            List<Hotel> hotelList = esHotelService.getHotelFromTitle("再来");//调用service完成搜索
            if (hotelList != null && hotelList.size() > 0) {//搜索到结果打印到前端
                return hotelList.toString();
            } else {
                return "no data.";
            }
        }
    
    }

    文章参考:Elasticsearch搜索引擎构建入门与实战 --> 2.4 Jest客户端简介

  • 相关阅读:
    环求解点值
    汉诺塔(记录每种路径次数)
    快速排序
    选择排序
    冒泡排序
    桶排序
    异或后最大lowerbit
    计数三角形
    nico和niconiconi
    提高程序设计能力的一般方法
  • 原文地址:https://www.cnblogs.com/ooo0/p/15632017.html
Copyright © 2020-2023  润新知