ElasticSearch-按特定字段删除文档

时间:2018-11-12 22:01:55

标签: elasticsearch

这个看似简单的任务没有在ElasticSearch文档中得到充分记录:

我们有一个ElasticSearch实例,该实例的索引中包含一个名为sourceId的字段。我将首先GET字段sourceId DELETE字段中所有具有100的文档(以便在删除前验证结果)然后再$artist相同的文档进行API调用?

1 个答案:

答案 0 :(得分:3)

您可能需要在此处进行两次API调用。首先查看文件的数量,其次执行删除。

查询将是相同的,但是终点是不同的。另外,我假设sourceId的类型为keyword

查询以验证

POST <your_index_name>/_search
{
  "size": 0,
  "query": {
    "term": {
      "sourceId": "100"
    }
  }
}

执行上面的Term Query,并在响应的hits.total上做一个记录。

如果要查看整个文档作为响应,请删除上述查询中的"size":0

一旦有了详细信息,就可以继续使用下面的查询中所示的相同查询执行删除操作,但是请注意端点。

要删除的查询

POST <your_index_name>/_delete_by_query
{
  "query": {
    "term": {
      "sourceId": "100"
    }
  }
}

执行Deletion By Query后,请注意响应中的deleted字段。它必须显示相同的号码。

我使用过术语查询,但是您也可以使用任何Match或任何复杂的Bool Query。只需确保查询正确即可。

希望有帮助!