ElasticSearch 7.6.x 版本 2020最新版 JavaRest api


ElasticSearch 7.6.x 版本 2020最新版 JavaRest api

 

 

前言

      周末閑來無事,到官網學習(fanyi)了下最新版本的ESJavaRest API。
ES版本:7.6.2
Springboot版本:2.2.6

 

 

准備工作及注意事項

1. Maven導包

      Springboot 2.2.6默認幫我們導入的是ES 6.8.7的包,所以我們需要更改下版本

<elasticsearch.version>7.6.1</elasticsearch.version> 
  • 1

2. 初始化Client

@Configuration public class ElasticSearchConfig { @Bean public RestHighLevelClient client(){ RestHighLevelClient client = new RestHighLevelClient(RestClient.builder( new HttpHost("localhost",9200,"http") )); return client; } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

索引(index)

增加索引

    //創建索引 @Test void createIndex() throws IOException { CreateIndexRequest request = new CreateIndexRequest("index1"); CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

刪除索引

    //刪除索引 @Test void deleteIndex() throws IOException { DeleteIndexRequest request = new DeleteIndexRequest("index1"); AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT); boolean isSuccessful = delete.isAcknowledged(); System.out.println(isSuccessful); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

查詢索引是否存在

    //返回索引是否存在 @Test void existIndex() throws IOException { GetIndexRequest request = new GetIndexRequest("index1"); boolean exists = client.indices().exists(request, RequestOptions.DEFAULT); System.out.println(exists); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

文檔(document)

添加文檔

    //添加文檔 @Test void addDocument() throws IOException { User user = new User("dai", 22); IndexRequest request = new IndexRequest("index1") .id("1") .timeout(TimeValue.timeValueSeconds(1)); IndexRequest source = request.source(JSON.toJSONString(user), XContentType.JSON); IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT); System.out.println(indexResponse.toString()); System.out.println(indexResponse.status()); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

刪除文檔

    //刪除文檔 @Test void deleteDocument() throws IOException { DeleteRequest request = new DeleteRequest("index1", "2"); request.timeout("1s"); DeleteResponse deleteResponse = client.delete(request, RequestOptions.DEFAULT); System.out.println(deleteResponse.status()); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

查詢文檔是否存在

    //判斷文檔是否存在 @Test void isExistDocument() throws IOException { GetRequest request = new GetRequest("index1", "1"); //不獲取_source內容,提升效率 request.fetchSourceContext(new FetchSourceContext(false)); request.storedFields("_none_"); boolean exists = client.exists(request, RequestOptions.DEFAULT); System.out.println(exists); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

更新文檔

    //更新文檔 @Test void updateDocument() throws IOException { UpdateRequest request = new UpdateRequest("index1", "1"); request.timeout("1s"); User user = new User("dai2", 22); request.doc(JSON.toJSONString(user), XContentType.JSON); UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT); System.out.println(updateResponse.status()); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

數據(datas)

批量插入數據

    //批量插入數據 @Test void BulkRequest() throws IOException { BulkRequest bulkRequest = new BulkRequest() .timeout("5s"); List<User> users = Arrays.asList(new User("dai1", 1), new User("dai2", 2), new User("dai3", 3)); for (User user : users) { bulkRequest.add(new IndexRequest("index1") //.id("xxx") .source(JSON.toJSONString(user), XContentType.JSON)); } BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT); //是否失敗,false表示成功 System.out.println(bulkResponse.hasFailures()); System.out.println(bulkResponse.status()); } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

查詢

    //查詢 @Test void search() throws IOException { SearchRequest request = new SearchRequest("index1"); //構建搜索條件 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // SearchRequest 搜索請求 // SearchSourceBuilder 條件構造 // HighlightBuilder 構建高亮 // TermQueryBuilder 精確查詢 // MatchAllQueryBuilder ..... MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery(); sourceBuilder.query(matchAllQueryBuilder) .timeout(new TimeValue(60, TimeUnit.SECONDS)); request.source(sourceBuilder); SearchResponse searchResponse = client.search(request, RequestOptions.DEFAULT); System.out.println(JSON.toJSONString(searchResponse.getHits(), true)); System.out.println("==================================="); for (SearchHit documentFields : searchResponse.getHits()) { System.out.println(documentFields.getSourceAsMap()); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

點個贊再走,球球啦!

原創不易,白嫖不好,各位的支持和認可,就是我創作的最大動力,我們下篇文章見!

本博客僅發布於CSDN—一個帥到不能再帥的人 Mr_kidBK。轉載請標明出處。
https://blog.csdn.net/Mr_kidBK

點贊!收藏!轉發!!!么么噠!
點贊!收藏!轉發!!!么么噠!
點贊!收藏!轉發!!!么么噠!
點贊!收藏!轉發!!!么么噠!
點贊!收藏!轉發!!!么么噠!

 

 

 

======================================================================================

springboot集成elasticsearch-rest-high-level-client的坑

原創
2019/09/23 17:01
閱讀數 3.9W

我使用的是Elasticsearch7.2.0,由於官網上推薦使用elasticsearch-rest-high-level-client端集成在springboot所以嘗試爬坑。

首先直接引入官網的配置文件

       <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> </dependency>

然后在運行時報錯:

...
...
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.xcontent.DeprecationHandler ... ...

百度了一下說jar里的Elasticsearch版本有錯,要移除了再重新引入,所以把配置文件改成下面的樣子

        <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> <exclusions> <exclusion> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </exclusion> </exclusions> </dependency> <!-- 正確版本 --> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.2.0</version> </dependency>

然后再次啟動,Elasticsearch正常運行,但是發現spring的rest服務運行不正常,配置的Filter沒有正常運行,且不報錯。網上找了很久也沒有找到有類似錯誤的問題,后來反復查看官網,他說elasticsearch-rest-high-level-client是基於elasticsearch-rest-client的,我就猜這個基於會不會是依賴的意思呢?

於是把配置改成了這樣:

        <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-client</artifactId> <version>7.2.0</version> </dependency> <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>7.2.0</version> </dependency>

然后再次啟動,Elasticsearch正常運行,REST服務也正常,我的老天鵝,終於可以了。

后來我找到了這篇文章Elasticsearch High Level REST Client,具體配置可以參考下

 

 

 

https://blog.csdn.net/mr_kidbk/article/details/105477095

https://my.oschina.net/u/3362856/blog/3109764

高亮查詢

https://blog.csdn.net/qq_43750656/article/details/106752154


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM