ElasticSearch 實現分詞全文檢索 - delete-by-query

VipSoft發表於2023-03-15

目錄

ElasticSearch 實現分詞全文檢索 - 概述
ElasticSearch 實現分詞全文檢索 - ES、Kibana、IK安裝
ElasticSearch 實現分詞全文檢索 - Restful基本操作
ElasticSearch 實現分詞全文檢索 - Java SpringBoot ES 索引操作
ElasticSearch 實現分詞全文檢索 - Java SpringBoot ES 文件操作
ElasticSearch 實現分詞全文檢索 - 測試資料準備
ElasticSearch 實現分詞全文檢索 - term、terms查詢
ElasticSearch 實現分詞全文檢索 - id、ids、prefix、fuzzy、wildcard、range、regexp 查詢
ElasticSearch 實現分詞全文檢索 - Scroll 深分頁
ElasticSearch 實現分詞全文檢索 - delete-by-query
ElasticSearch 實現分詞全文檢索 - 複合查詢 --待發布
ElasticSearch 實現分詞全文檢索 - filter查詢 --待發布
ElasticSearch 實現分詞全文檢索 - 高亮查詢 --待發布
ElasticSearch 實現分詞全文檢索 - 聚合查詢 cardinality --待發布
ElasticSearch 實現分詞全文檢索 - 經緯度查詢 --待發布

資料準備

ElasticSearch 實現分詞全文檢索 - 測試資料準備

delete-by-query

根據 term、match 等查詢方式去刪除大量的文件

如果需要刪除的內容,是index下的大部分資料,不建議使用,因為去匹配文件時還是一個一個的拿到文件ID,去刪除
推薦建立一個全新的index,將保留的文件內容,新增到全新的索引中

# 查詢出有一條資料,刪除後再查詢,資料已不存在
GET /sms-logs-index/_search/
{
  "query": {
    "range": {
      "fee": {
        "lt": 15
      }
    }
  }
}

# delete-by-query
POST /sms-logs-index/_delete_by_query
{
  "query": {
    "range": {
      "fee": {
        "lt": 15
      }
    }
  }
}

Java

@Test
void deleteByQuery() throws Exception {
    String indexName = "sms-logs-index";
    RestHighLevelClient client = ESClient.getClient();

    //1. 建立DeleteByQueryRequest物件
    DeleteByQueryRequest request = new DeleteByQueryRequest(indexName);

    //2. 指定查詢條件 和 SearchRequest 指定Query的方式不一樣
    request.setQuery(QueryBuilders.rangeQuery("fee").lt(16));

    //3. 執行刪除
    BulkByScrollResponse resp = client.deleteByQuery(request, RequestOptions.DEFAULT);

    //4. 輸出返回值
    System.out.println(resp.toString());
}

相關文章