Elasticsearch按查询删除未完成删除

时间:2019-10-31 17:48:42

标签: elasticsearch

我需要删除5.5 Elasticsearch集群中的大量文档。我知道执行此操作的最佳方法是在没有预期文档的情况下重建集群,但是在我们的情况下这是不可能的。我运行以下查询,该查询从集群中一部分索引中删除文档:

GET myindex_1*/doc_type/_delete_by_query
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "typeCode": [
              "Filtered_Type"
            ]
          }
        }
      ],
      "must": [
        {
          "range": {
            "createdDateUTC": {
              "lt": "2017-10-28"
            }
          }
        }
      ]
    }
  }
}

它开始删除文档几个小时,但随后停止,我不得不再次开始。为什么停止运行删除查询的任何想法?

请注意,虽然我可以看到它在后端继续删除,但我正在使用Kibana运行查询,并且请求在客户端超时。

1 个答案:

答案 0 :(得分:0)

来自here

  

默认情况下,_delete_by_query使用滚动批处理1000。您可以使用scroll_size URL参数更改批处理大小:

POST twitter/_delete_by_query?scroll_size=5000
{
  "query": {
    "term": {
      "user": "kimchy"
    }
  }
}

您可以在此处找到有关批次和批次大小的更多信息:

由于您需要滚动浏览多个批次才能删除查询中找到的所有文档,因此您可以在此处找到有关滚动的更多信息: