我需要删除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运行查询,并且请求在客户端超时。
答案 0 :(得分:0)
来自here:
默认情况下,_delete_by_query使用滚动批处理1000。您可以使用scroll_size URL参数更改批处理大小:
POST twitter/_delete_by_query?scroll_size=5000
{
"query": {
"term": {
"user": "kimchy"
}
}
}
您可以在此处找到有关批次和批次大小的更多信息:
由于您需要滚动浏览多个批次才能删除查询中找到的所有文档,因此您可以在此处找到有关滚动的更多信息: