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

SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象刪除指定的文檔數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象刪除指定的文檔數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象刪除指定的文檔數(shù)據(jù)

使用客戶端刪除

在 Kibana 中,你可以使用 Dev Tools 或者 Console 來執(zhí)行 Elasticsearch 查詢和刪除操作。

? 以下是一個(gè)使用 Dev Tools 執(zhí)行刪除文檔的示例:

? 1.打開 Kibana,轉(zhuǎn)到左側(cè)導(dǎo)航欄的 “Dev Tools” 或者 “Console”。

? 2.在 Dev Tools 或者 Console 中輸入如下刪除請(qǐng)求:

POST /your_index/_delete_by_query
{
  "query": {
    "term": {
      "name.keyword": "張三"
    }
  }
}

請(qǐng)?zhí)鎿Q /your_index/ 為你實(shí)際的索引名稱。這個(gè)請(qǐng)求會(huì)刪除索引中所有 “name” 字段值為 “張三” 的文檔。

  1. 然后點(diǎn)擊 “Run” 或者使用快捷鍵執(zhí)行該請(qǐng)求。

請(qǐng)注意,name.keyword 是默認(rèn)情況下使用的字符串字段的名稱,確保在你的映射中使用了正確的字段名稱。如果你的 “name” 字段不是關(guān)鍵字類型(keyword),你可能需要調(diào)整查詢條件。

確保在執(zhí)行刪除操作之前做好備份,并謹(jǐn)慎操作,因?yàn)閯h除操作是不可逆的。


1、第一種

在Spring Boot中使用RestHighLevelClient刪除Elasticsearch中的文檔數(shù)據(jù),你可以通過以下方式實(shí)現(xiàn):

import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class ElasticsearchService {

    @Autowired
    private RestHighLevelClient elasticsearchClient;

    public void deleteDocumentByName(String name, String indexName, String typeName) throws IOException {
        // 構(gòu)建DeleteRequest
        DeleteRequest deleteRequest = new DeleteRequest(indexName, typeName, name);

        // 可以設(shè)置其他參數(shù),如路由、超時(shí)等
        // deleteRequest.routing("your-routing");
        // deleteRequest.timeout("10s");

        // 執(zhí)行刪除請(qǐng)求
        DeleteResponse deleteResponse = elasticsearchClient.delete(deleteRequest, RequestOptions.DEFAULT);

        // 處理刪除響應(yīng)
        String index = deleteResponse.getIndex();
        String id = deleteResponse.getId();
        long version = deleteResponse.getVersion();
        System.out.println("Deleted document with id " + id + " from index " + index + " with version " + version);
    }
}

在上面的代碼中,首先構(gòu)建了一個(gè)DeleteRequest對(duì)象,指定了要?jiǎng)h除的文檔的索引、類型(如果有)、文檔ID。然后使用RestHighLevelClientdelete方法執(zhí)行刪除請(qǐng)求,并通過DeleteResponse獲取刪除的結(jié)果。

請(qǐng)注意,Elasticsearch 7.x 版本已經(jīng)移除了類型(type)的概念,因此在新的索引中,typeName參數(shù)可能是可選的,具體取決于你的Elasticsearch版本和索引的映射設(shè)置。如果你的索引中沒有使用類型,可以將typeName設(shè)置為null或者省略。


2、第二種在 Elasticsearch 7.x 以前

如果你的Elasticsearch索引中有一個(gè)字段名為 “name”,并且你想要?jiǎng)h除該字段值為 “張三” 的文檔,可以使用 Elasticsearch 的 Query DSL 來構(gòu)建一個(gè)刪除請(qǐng)求。以下是一個(gè)示例代碼,演示如何使用 RestHighLevelClient 來刪除具有特定 “name” 值的文檔:

import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class ElasticsearchService {

    @Autowired
    private RestHighLevelClient elasticsearchClient;

    public void deleteDocumentByName(String name, String indexName) throws IOException {
        // 構(gòu)建查詢請(qǐng)求,查找具有特定 name 值的文檔
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.termQuery("name", name));

        SearchRequest searchRequest = new SearchRequest(indexName);
        searchRequest.source(searchSourceBuilder);

        // 執(zhí)行查詢請(qǐng)求
        SearchResponse searchResponse = elasticsearchClient.search(searchRequest, RequestOptions.DEFAULT);

        // 遍歷查詢結(jié)果,獲取文檔 ID 并刪除文檔
        for (var hit : searchResponse.getHits().getHits()) {
            String documentId = hit.getId();
            deleteDocumentById(indexName, documentId);
        }
    }

    private void deleteDocumentById(String indexName, String documentId) throws IOException {
        // 構(gòu)建刪除請(qǐng)求
        DeleteRequest deleteRequest = new DeleteRequest(indexName, documentId);

        // 執(zhí)行刪除請(qǐng)求
        DeleteResponse deleteResponse = elasticsearchClient.delete(deleteRequest, RequestOptions.DEFAULT);

        // 處理刪除響應(yīng)
        String index = deleteResponse.getIndex();
        String id = deleteResponse.getId();
        long version = deleteResponse.getVersion();
        System.out.println("Deleted document with id " + id + " from index " + index + " with version " + version);
    }
}

上面的代碼首先構(gòu)建一個(gè)搜索請(qǐng)求,使用 QueryBuilders.termQuery 來匹配具有特定 “name” 值的文檔。然后,遍歷搜索結(jié)果,獲取文檔的 ID,并使用 deleteDocumentById 方法刪除相應(yīng)的文檔。請(qǐng)確保在實(shí)際使用中進(jìn)行適當(dāng)?shù)腻e(cuò)誤處理和資源管理。


3、第三種在 Elasticsearch 7.x 中

在 Elasticsearch 7.x 中,不再支持直接刪除文檔時(shí)使用 SearchRequest 查詢文檔然后刪除的方式,而是直接使用 DeleteByQueryRequest 來執(zhí)行刪除操作。以下是一個(gè)正確的示例代碼:

import org.elasticsearch.action.delete.DeleteByQueryRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class ElasticsearchService {

    @Autowired
    private RestHighLevelClient elasticsearchClient;

    public void deleteDocumentByName(String name, String indexName) throws IOException {
        // 構(gòu)建刪除請(qǐng)求,刪除具有特定 name 值的文檔
        DeleteByQueryRequest deleteByQueryRequest = new DeleteByQueryRequest(indexName);
        deleteByQueryRequest.setQuery(QueryBuilders.termQuery("name", name));

        // 執(zhí)行刪除請(qǐng)求
        elasticsearchClient.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT);

        System.out.println("Deleted documents with name " + name + " from index " + indexName);
    }
}

在這個(gè)示例中,使用了 DeleteByQueryRequest 來構(gòu)建刪除請(qǐng)求,并通過 QueryBuilders.termQuery 指定要?jiǎng)h除的文檔的條件(在這里是 “name” 字段等于 “張三”)。然后,通過 elasticsearchClient.deleteByQuery 執(zhí)行刪除操作。請(qǐng)確保在實(shí)際使用中進(jìn)行適當(dāng)?shù)腻e(cuò)誤處理和資源管理。


4、批量刪除

要批量刪除 Elasticsearch 中符合特定條件的文檔,你可以使用 DeleteByQueryRequest。以下是一個(gè)示例代碼,演示如何使用 RestHighLevelClient 批量刪除具有特定 “name” 值的文檔:

import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

@Service
public class ElasticsearchService {

    @Autowired
    private RestHighLevelClient elasticsearchClient;

    public void deleteDocumentsByName(String name, String indexName) throws IOException {
        // 構(gòu)建批量刪除請(qǐng)求
        BulkRequest bulkRequest = new BulkRequest();

        // 構(gòu)建查詢請(qǐng)求,查找具有特定 name 值的文檔
        bulkRequest.add(new DeleteByQueryRequest(indexName)
                .setQuery(QueryBuilders.termQuery("name", name)));

        // 執(zhí)行批量刪除請(qǐng)求
        elasticsearchClient.bulk(bulkRequest, RequestOptions.DEFAULT);

        System.out.println("Deleted documents with name " + name + " from index " + indexName);
    }
}

在這個(gè)示例中,使用了 BulkRequest 來批量構(gòu)建刪除請(qǐng)求。對(duì)于每個(gè)刪除請(qǐng)求,使用 DeleteByQueryRequest 來指定要?jiǎng)h除的文檔的條件(在這里是 “name” 字段等于 “張三”)。然后,通過 elasticsearchClient.bulk 執(zhí)行批量刪除操作。請(qǐng)確保在實(shí)際使用中進(jìn)行文章來源地址http://www.zghlxwxcb.cn/news/detail-818805.html

到了這里,關(guān)于SpringBoot+Elasticsearch使用resthighlevelclient對(duì)象刪除指定的文檔數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ElasticSearch7.3學(xué)習(xí)(十六)----RestHighLevelClient Java api實(shí)現(xiàn)索引的創(chuàng)建、刪除、是否存在、關(guān)閉、開啟

    注意:導(dǎo)入的包區(qū)別,不同的包創(chuàng)建索引的方式不同。博主親身實(shí)踐,具體體現(xiàn)在createIndexRequest.mapping()里面。讀者可自行試驗(yàn)。 ?由此可以猜想一下: 可以看到上述兩種方式導(dǎo)入的包的子類名是相同的,但是具體對(duì)索引的操作方式可能是不同的。具體的區(qū)別博主暫時(shí)還不清

    2024年02月16日
    瀏覽(90)
  • SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實(shí)戰(zhàn))

    SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實(shí)戰(zhàn))

    上一節(jié)講述了 SpringBoot 實(shí)現(xiàn) elasticsearch 索引操作,這一章節(jié)講述 SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作。 案例用到的索引庫結(jié)構(gòu)

    2024年02月11日
    瀏覽(18)
  • ElasticSearch系列 - SpringBoot整合ES:restHighLevelClient.count(countRequest, RequestOptions.DEFAULT)

    restHighLevelClient.count(countRequest, RequestOptions.DEFAULT) 是 Elasticsearch Java High Level REST Client 中用于執(zhí)行計(jì)數(shù)請(qǐng)求的方法。 具體來說,它接受兩個(gè)參數(shù): countRequest:一個(gè) CountRequest 對(duì)象,表示計(jì)數(shù)請(qǐng)求的參數(shù),包括要計(jì)數(shù)的索引、查詢條件等。 RequestOptions.DEFAULT:一個(gè) RequestOptions 對(duì)象

    2024年02月08日
    瀏覽(23)
  • 項(xiàng)目中使用es(二):使用RestHighLevelClient操作elasticsearch

    寫在前面 之前寫了有關(guān)elasticsearch的搭建和使用springboot操作elasticsearch,這次主要簡單說下使用RestHighLevelClient工具包操作es。 搭建環(huán)境和選擇合適的版本 環(huán)境還是以springboot2.7.12為基礎(chǔ)搭建的,不過這不重要,因?yàn)檫@次想說的是RestHighLevelClient操作elasticsearch,RestHighLevelClient版本

    2024年02月14日
    瀏覽(26)
  • Java使用Springboot集成Es官方推薦(RestHighLevelClient)

    Java使用Springboot集成Es官方推薦(RestHighLevelClient)

    SpringBoot集成ElasticSearch的四種方式(主要講解ES官方推薦方式) TransportClient:這種方式即將棄用 官方將在8.0版本徹底去除 Data-Es:Spring提供的封裝的方式,由于是Spring提供的,所以每個(gè)SpringBoot版本對(duì)應(yīng)的ElasticSearch,具體這么個(gè)對(duì)應(yīng)的版本,自己去官網(wǎng)看 ElasticSearch SQL:將Elasti

    2023年04月08日
    瀏覽(23)
  • spring data elasticsearch使用7.x客戶端兼容es 8.x和使用ssl構(gòu)建RestHighLevelClient

    es在7.x中默認(rèn)加入elastic security組件所以java client需要使用ssl連接es server. es 8.x 中廢棄了 RestHighLevelClient ,使用新版的 java api client ,但是spring data elasticsearch還未更新到該版本.所以需要兼容es 8.x 如下是RestHighLevelClient構(gòu)建方法: spring data elasticsearch客戶端依賴(基于spring boot2.7使用最新

    2024年02月13日
    瀏覽(26)
  • Elasticsearch-RestHighLevelClient基礎(chǔ)操作

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

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

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

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

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

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

    2024年02月10日
    瀏覽(20)
  • springboot整合RestHighLevelClient

    yml config https://www.cnblogs.com/tanghaorong/p/16344391.html

    2024年02月05日
    瀏覽(14)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包