ElasticSearch---Java中如何使用

目前市面上有两类客户端

一类是TransportClient 为代表的ES原生客户端,不能执行原生dsl语句必须使用它的Java api方法。

另外一种是以Rest Api为主的missing client,最典型的就是jest。 这种客户端可以直接使用dsl语句拼成的字符串,直接传给服务端,然后返回json字符串再解析。

两种方式各有优劣,但是最近elasticsearch官网,宣布计划在7.0以后的版本中废除TransportClient。以RestClient为主。

所以在官方的RestClient 基础上,进行了简单包装的Jest客户端,就成了首选,而且该客户端也与springboot完美集成。

导入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

<!-- https://mvnrepository.com/artifact/io.searchbox/jest -->
<dependency>
   <groupId>io.searchbox</groupId>
   <artifactId>jest</artifactId>
   <version>5.3.3</version>
</dependency>


<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
<dependency>
   <groupId>net.java.dev.jna</groupId>
   <artifactId>jna</artifactId>
   <version>4.5.1</version>
</dependency>

application.properties中加入

spring.elasticsearch.jest.uris=http://192.168.67.163:9200
@Autowired JestClient jestClient; @Test public void testEs() throws IOException { String query="{ " + " "query": { " + " "match": { " + " "actorList.name": "张译" " + " } " + " } " + "}"; Search search = new Search.Builder(query).addIndex("movie_chn").addType("movie_type_chn").build(); SearchResult result = jestClient.execute(search); List<SearchResult.Hit<HashMap, Void>> hits = result.getHits(HashMap.class); for (SearchResult.Hit<HashMap, Void> hit : hits) { HashMap source = hit.source; System.err.println("source = " + source); } }
经验分享 程序员 微信小程序 职场和发展