pom坐标 ,我安装的es是7.1.1 注意版本,同时注意要把 elasticsearch-rest-high-level-client 自带的
org.elasticsearch 排包。重新引入 elasticsearch
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.1.1</version> <exclusions> <exclusion> <artifactId>elasticsearch</artifactId> <groupId>org.elasticsearch</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.1.1</version> </dependency>
附上完整的java代码
package org.example.elasticsearch; import org.apache.http.HttpHost; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.DocWriteResponse; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.index.query.*; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.time.LocalDateTime; import java.util.HashMap; import java.util.Map; public class ElasticSearchTest { private RestHighLevelClient restHighLevelClient = null; // 在所有的测试方法之前执行 @SuppressWarnings("resource") @Before public void init() throws Exception { restHighLevelClient = new RestHighLevelClient( RestClient.builder( new HttpHost("121.5.182.220", 9200, "http"))); } @After public void destroy() throws Exception { restHighLevelClient.close(); } @Test public void elasticsearchCreate() throws IOException { IndexRequest request = new IndexRequest("es_user"); Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("user_name", "5t5"); jsonMap.put("post_date", LocalDateTime.now()); jsonMap.put("age", 23); jsonMap.put("gender", "male"); jsonMap.put("height", 190); jsonMap.put("address", "shenyang tiexi gongrenchun"); request.source(jsonMap); IndexResponse response = null; try { response = restHighLevelClient.index(request, RequestOptions.DEFAULT); if(response.getResult().name().equalsIgnoreCase("created")){ System.out.println("insert index success"); }else { } } catch (IOException e) { e.printStackTrace(); } } @Test public void elasticsearchUpdate() throws IOException { UpdateRequest updateRequest = new UpdateRequest("es_user","QDUw6XgBGWZZ4Vv4e9ID"); Map<String, Object> jsonMap = new HashMap<>(); jsonMap.put("user_name", "kratos"); jsonMap.put("post_date", LocalDateTime.now()); jsonMap.put("age", 46); jsonMap.put("gender", "male"); jsonMap.put("height", 195); jsonMap.put("address", "greece athens"); updateRequest.doc(jsonMap); UpdateResponse response = null; try { response = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT); if(response.getResult() == DocWriteResponse.Result.UPDATED){ System.out.println("updated index success"); }else { } } catch (IOException e) { e.printStackTrace(); } } @Test public void testGetDoc() throws IOException { //查询请求对象 GetRequest getRequest = new GetRequest("es_user","QDUw6XgBGWZZ4Vv4e9ID"); GetResponse getResponse = restHighLevelClient.get(getRequest,RequestOptions.DEFAULT); //得到文档的内容 Map<String, Object> sourceAsMap = getResponse.getSourceAsMap(); System.out.println(sourceAsMap); } @Test public void testGetDocExist() throws IOException { //查询请求对象 GetRequest getRequest = new GetRequest("es_user","QDUw6XgBGWZZ4Vv4e9ID"); restHighLevelClient.existsAsync(getRequest,RequestOptions.DEFAULT, new ActionListener<Boolean>() { @Override public void onResponse(Boolean aBoolean) { //得到文档的内容 System.out.println(aBoolean); } @Override public void onFailure(Exception e) { System.out.println(e); } }); } @Test public void testQuery() { SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.from(0); sourceBuilder.size(10); sourceBuilder.fetchSource(new String[]{"user_name"}, new String[]{}); MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("address", "nanjing"); TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("user_name", "snake"); // RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("publishTime"); // rangeQueryBuilder.gte("2018-01-26T08:00:00Z"); // rangeQueryBuilder.lte("2018-01-26T20:00:00Z"); BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery(); boolBuilder.must(matchQueryBuilder); boolBuilder.must(termQueryBuilder); // boolBuilder.must(rangeQueryBuilder); sourceBuilder.query(boolBuilder); SearchRequest searchRequest = new SearchRequest("es_user"); // searchRequest.types(type); searchRequest.source(sourceBuilder); try { SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); SearchHit[] searchHtis = response.getHits().getHits(); SearchHit searchHit = searchHtis[0]; Map<String, Object> sourceResult = searchHit.getSourceAsMap(); System.out.println(sourceResult.get("user_name")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
es中完整数据如下
查询条件
GET _search { "query": { "match": { "address": "nanjing" } } }
{ "took" : 5, "timed_out" : false, "_shards" : { "total" : 3, "successful" : 3, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 0.2876821, "hits" : [ { "_index" : "es_user", "_type" : "_doc", "_id" : "QDUw6XgBGWZZ4Vv4e9ID", "_score" : 0.2876821, "_source" : { "address" : "nanjing honghua yingchunyuan", "gender" : "male", "user_name" : "snake", "post_date" : "2021-04-19T08:12:51.179Z", "age" : 23, "height" : 180 } } ] } }