springboot jest链接es
JestClient是一款基于HTTP实现的ES客户端,在RestHighLevelClient出现之前,它填补了ES缺少HTTP REST接口客户端的空白。JestClient具有一定的ES服务端版本兼容性,支持数据的同步和异步操作,同时,它也提供了索引时和搜索结果的POJO映射机制,即OR-Mapping功能
依赖配置:
<dependency> <groupId>io.searchboxgroupId> <artifactId>jestartifactId> <version>6.3.1version> dependency> <dependency> <groupId>org.elasticsearchgroupId> <artifactId>elasticsearchartifactId> <version>7.10.2version> 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 ListgetHotelFromTitle(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() { ListhotelList = esHotelService.getHotelFromTitle("再来");//调用service完成搜索 if (hotelList != null && hotelList.size() > 0) {//搜索到结果打印到前端 return hotelList.toString(); } else { return "no data."; } } }
文章参考:Elasticsearch搜索引擎构建入门与实战 --> 2.4 Jest客户端简介