国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch RestHighLevelClient 已標記為被棄用 它的替代方案 Elasticsearch Java API Client 的基礎教程及遷移方案

這篇具有很好參考價值的文章主要介紹了Elasticsearch RestHighLevelClient 已標記為被棄用 它的替代方案 Elasticsearch Java API Client 的基礎教程及遷移方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在Elasticsearch7.15版本之后,Elasticsearch官方將它的高級客戶端RestHighLevelClient標記為棄用狀態(tài)。同時推出了全新的Java API客戶端Elasticsearch Java API Client,該客戶端也將在Elasticsearch8.0及以后版本中成為官方推薦使用的客戶端。

Elasticsearch Java API Client 支持除 Vector tile search API 和 Find structure API 之外的所有 Elasticsearch API。且支持所有API數(shù)據(jù)類型,并且不再有原始JsonValue屬性。它是針對Elasticsearch8.0及之后版本的客戶端,目前Elasticsearch已經(jīng)更新至8.0.1,所以我們需要學習新的Elasticsearch Java API Client的使用方法。

1. 環(huán)境要求

首先,你的項目需要支持Java8或以上,并且你的項目需要有一個Json對象映射庫,比如Jackson等,本文章中使用Jackson作為示例。

2. 安裝依賴

在Gradle項目中安裝:

dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.0.1'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.3'
}

在Maven項目中安裝:

<project>

  <dependencies>
    <dependency>
      <groupId>co.elastic.clients</groupId>
      <artifactId>elasticsearch-java</artifactId>
      <version>8.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.3</version>
    </dependency>
  </dependencies>

</project>

3. 連接

// 創(chuàng)建低級客戶端
RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200)).build();

// 使用Jackson映射器創(chuàng)建傳輸層
ElasticsearchTransport transport = new RestClientTransport(
    restClient, new JacksonJsonpMapper());

// 創(chuàng)建API客戶端
ElasticsearchClient client = new ElasticsearchClient(transport);

4. 測試查詢請求

注意,需要ES內(nèi)有相應的數(shù)據(jù)才可以查到。如沒有數(shù)據(jù)可供測試可以直接跳過本項。

SearchResponse<Product> search = client.search(s -> s
    .index("products")
    .query(q -> q
        .term(t -> t
            .field("name")
            .value(v -> v.stringValue("testname"))
        )),
    Product.class);

for (Hit<Product> hit: search.hits().hits()) {
    processProduct(hit.source());
}

5. 索引Index的基本操作

5.1 創(chuàng)建索引

// 創(chuàng)建連接
RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200)).build();
ElasticsearchTransport transport = new RestClientTransport(
        restClient, new JacksonJsonpMapper());
ElasticsearchClient client = new ElasticsearchClient(transport);

// 創(chuàng)建索引
CreateIndexResponse createIndexResponse = client.indices().create(c -> c.index("newapi"));
// 打印結果
System.out.println(createIndexResponse.acknowledged());

// 關閉連接
transport.close();
restClient.close();

其中,newapi為你要創(chuàng)建索引的名字。

5.2 查詢索引

// Create the low-level client
RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200)).build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
        restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
GetIndexResponse createIndexResponse = client.indices().get(e->e.index("newapi"));
System.out.println(String.join(",", createIndexResponse.result().keySet()));
transport.close();
restClient.close();

其中,newapi為你要查詢索引的名字。

5.3 刪除索引

// Create the low-level client
RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200)).build();
// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
        restClient, new JacksonJsonpMapper());
// And create the API client
ElasticsearchClient client = new ElasticsearchClient(transport);
DeleteIndexResponse deleteIndexResponse = client.indices().delete(e->e.index("newapi"));
System.out.println(deleteIndexResponse.acknowledged());
transport.close();
restClient.close();

其中,newapi為你要刪除索引的名字。

6. 文檔Doc的基本操作

6.1 創(chuàng)建文檔Doc

// 創(chuàng)建一個需要保存至ES的對象
Test test = new Test();
test.setName("添加測試");
test.setSex("男");
test.setAge(24);

// 構建一個創(chuàng)建Doc的請求
CreateResponse createResponse = client.create(e->e.index("newapi").id("1003").document(test));

// 打印請求結果
System.out.println(createResponse.result());

其中,index為文檔Doc所屬索引的名字,id為該文檔的id,document參數(shù)現(xiàn)在可以直接傳入Java對象了。

6.2 修改文檔Doc

// 構建需要修改的內(nèi)容,這里使用了Map
Map<String, Object> map = new HashMap<>();
        map.put("age", 35);

// 構建修改文檔的請求
UpdateResponse<Test> response = client.update(e -> e.index("newapi").id("1003").doc(map), Test.class);

// 打印請求結果
System.out.println(response.result());

6.3 查詢文檔Doc

// 構建查詢請求
GetResponse<Test> response = client.get(e -> e.index("newapi").id("1003"), Test.class);

// 打印查詢結果
System.out.println(response.source().toString());

6.4 刪除文檔Doc

// 構建刪除文檔請求
DeleteResponse response = client.delete(e -> e.index("newapi").id("1001"));

// 打印請求結果
System.out.println(response.result());

更多新版客戶端Elasticsearch Java API Client的批量及復雜查詢相關操作已更新,可以查閱我的新文章:Elasticsearch8.0版本中Elasticsearch Java API Client客戶端的基本使用方法_無楓的博客,分享Java及Vue方向的技術文章-CSDN博客

如何從高級客戶端High Level Rest Client遷移至新版客戶端Elasticsearch Java API Client?

????????根據(jù)官方給出的答案是無法平滑的遷移,不過新版客戶端和舊版高級客戶端是可以共存的,并且沒有操作開銷。所以在你的項目中可以逐步的從舊版客戶端遷移至新版客戶端。

? ? ? ? 并且,官方還提供了使High Level Rest Client和Elasticsearch Java API Client使用相同的傳輸通道的方案,他可以使兩個客戶端共享相同的Low Level Rest Client,管理所有連接,循環(huán)策略的網(wǎng)絡層以及節(jié)點嗅探等工作。

? ? ? ? 以下代碼展示了如何使用相同的HTTP客戶端同時初始化新客戶端和舊客戶端:文章來源地址http://www.zghlxwxcb.cn/news/detail-793464.html

// 創(chuàng)建低級客戶端(新版客戶端內(nèi)容)
RestClientBuilder httpClientBuilder = RestClient.builder(
    new HttpHost("localhost", 9200)
);

// 創(chuàng)建舊版高級客戶端RestHighLevelClient 
RestHighLevelClient hlrc = new RestHighLevelClient(httpClientBuilder);

// 使用相同的低級客戶端創(chuàng)建新的Java客戶端
ElasticsearchTransport transport = new RestClientTransport(
    hlrc.getLowLevelClient(),
    new JacksonJsonpMapper()
);

ElasticsearchClient esClient = new ElasticsearchClient(transport);

// 新舊客戶端共享相同的http客戶端

到了這里,關于Elasticsearch RestHighLevelClient 已標記為被棄用 它的替代方案 Elasticsearch Java API Client 的基礎教程及遷移方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • vscode | linux | c++ intelliense 被棄用解決方案

    vscode | linux | c++ intelliense 被棄用解決方案

    每日一句,vscode用的爽是爽,主要是可配置太強了。如果也很會研究,可以直接去咸魚接單了 廢話少說,直接整。 用著用著說是c++ intelliense被棄用,很多輔助功能無法使用,像查看定義、查看引用、函數(shù)跳轉、智能提示…… 歸根結底,還是太菜了,但真的很需要這些輔助啊

    2024年02月12日
    瀏覽(79)
  • Android Handler被棄用,那么以后怎么使用Handler,或者類似的功能

    Android Handler被棄用,那么以后怎么使用Handler,或者類似的功能

    Android API30左右,Android應用在使用傳統(tǒng)寫法使用Handler類的時候會顯示刪除線,并提示相關的方法已經(jīng)被棄用,不建議使用。 Android studio中的顯示和建議: 看下官方API關于此處的解釋: ?簡要說就是如果在實例化Handler的時候不提供Looper, 可能導致操作丟失(Handler 沒有預估到新

    2023年04月21日
    瀏覽(26)
  • WebSecurityConfigurerAdapter被棄用Spring Security基于組件化的配置和使用

    WebSecurityConfigurerAdapter被棄用Spring Security基于組件化的配置和使用

    在Spring Security 5.7及之后的版本中 WebSecurityConfigurerAdapter 將被啟用,安全框架將轉向基于組件的安全配置。 spring security官方文檔 Spring Security without the WebSecurityConfigurerAdapter 如果使用的Spring Boot版本高于低于2.7.0、Spring Security版本高于5.7,就會出現(xiàn)如下的提示: 1、被啟用的原因

    2024年02月02日
    瀏覽(23)
  • Unity打包APK錯誤:‘a(chǎn)ndroid.enableR8‘選項已被棄用,不應再使用

    Unity打包APK錯誤:\\\'android.enableR8’選項已被棄用,不應再使用 在Unity游戲開發(fā)中,我們經(jīng)常需要將游戲打包成APK文件以在Android設備上進行測試或發(fā)布。然而,有時候在打包APK的過程中,可能會遇到一些錯誤。其中一個常見的錯誤是 “The option ‘a(chǎn)ndroid.enableR8’ is deprecated and sh

    2024年02月08日
    瀏覽(93)
  • Python錯題集-7:DeprecationWarning: Conversion of an array with ndim(被棄用警告)

    Python錯題集-7:DeprecationWarning: Conversion of an array with ndim(被棄用警告)

    DeprecationWarning: Conversion of an array with ndim 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) ? X[i] = np.random.normal(loc=Ex, scale=np.abs(Enn), size=1) DeprecationWarning: Conversion of an array with ndim ?是一個警告,通常出

    2024年04月09日
    瀏覽(33)
  • iOS中獲取MCC和MNC的方法及iOS 16中CTCarrier被棄用的替代方案

    一、使用公共API獲取MCC和MNC 在iOS中,我們可以使用CoreTelephony框架來獲取用戶的移動國家代碼(MCC)和移動網(wǎng)絡代碼(MNC)。具體操作步驟如下: 在Xcode項目中,點擊項目目標,進入“General”選項卡,在“Frameworks, Libraries, and Embedded Content”下點擊“+”按鈕,搜索并添加 Cor

    2024年02月11日
    瀏覽(84)
  • 還在用Calendar操作Date?Java8都棄用了,還不知道它的這款強大的工具嗎?

    在過去的Java版本中,日期和時間的處理主要依賴于 java.util.Date 和 java.util.Calendar 類,然而隨著業(yè)務系統(tǒng)的復雜以及技術層面的提升,這些傳統(tǒng)的日期時間類暴露出了若干顯著的不足之處。隨著 Java8 的發(fā)布,其引入了一套全新的日期時間API,徹底改變了我們處理日期和時間的

    2024年03月18日
    瀏覽(31)
  • Elasticsearch-RestHighLevelClient基礎操作

    該篇文章參考下面博主文章 Java中ElasticSearch的各種查詢(普通,模糊,前綴,高亮,聚合,范圍) 【es】java使用es中三種查詢用法from size、search after、scroll 刪除索引會把索引中已經(jīng)創(chuàng)建好的數(shù)據(jù)也刪除,就好像我們在mysql中刪除庫,會把庫的數(shù)據(jù)也刪除掉一樣。 類似關閉數(shù)據(jù)

    2024年02月08日
    瀏覽(25)
  • Elasticsearch:RestHighLevelClient實現(xiàn)搜索、分頁、排序、高亮

    Elasticsearch:RestHighLevelClient實現(xiàn)搜索、分頁、排序、高亮

    1.引入依賴 2.自定義搜索DTO 3.封裝工具類、實現(xiàn) 分頁、高亮、排序 反射工具類 ReflectUtil 是我自定義的,原理是反射,可以引入hutool的工具包,同樣也可以實現(xiàn)該結果

    2024年02月11日
    瀏覽(25)
  • RestHighLevelClient實現(xiàn)ElasticSearch關聯(lián)查詢之父子文檔

    RestHighLevelClient實現(xiàn)ElasticSearch關聯(lián)查詢之父子文檔今天分享,承接上一篇內(nèi)容: DSL操作關聯(lián)查詢 這篇我們通過javaAPI的方式實現(xiàn): 一、springboot 配置 1、pom文件引用: 2、初始化配置es操作類 3、業(yè)務層引用 二、核心偽代碼 1、創(chuàng)建父子索引 kibana查看 2、判斷索引是否存在 3、刪

    2024年02月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包