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客户端简介

 

posted @ 2021-12-02 10:15  草木物语  阅读(221)  评论(0编辑  收藏  举报