MST
星途 面试题库

面试题:ElasticSearch批量删除API的应用场景及使用

请说明在哪些场景下会使用到ElasticSearch的批量删除API。详细描述如何使用批量删除API删除多个满足特定条件的文档,例如根据某个字段的值筛选文档进行删除,需要给出对应的请求体示例。
33.5万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

适用场景

  1. 数据清理:当需要定期清理历史数据,比如日志数据保留一定时间后删除,可根据时间字段筛选删除。
  2. 错误数据处理:如果部分数据录入错误,且有共同特征,如某个字段值错误,可按该字段筛选删除。
  3. 业务变更:业务逻辑变化,导致某些符合特定条件的数据不再需要,如旧的业务规则下产生的数据。

使用方法及请求体示例

假设索引名为test_index,要删除status字段值为inactive的文档,使用Elasticsearch的_delete_by_query API ,请求体如下:

POST test_index/_delete_by_query
{
  "query": {
    "match": {
      "status": "inactive"
    }
  }
}

上述请求使用match查询来匹配status字段值为inactive的文档并删除。如果是更复杂的条件,如多个字段匹配,可使用bool查询:

POST test_index/_delete_by_query
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "status": "inactive"
          }
        },
        {
          "range": {
            "created_at": {
              "lt": "2023-01-01"
            }
          }
        }
      ]
    }
  }
}

此请求会删除statusinactivecreated_at早于2023-01-01的文档。