【发布时间】:2020-07-29 02:09:34
【问题描述】:
我有一个具有最大文档数的 Elasticsearch 索引。我想从此索引中删除一些数据。我试过运行 delete_by_query 但它失败了。对此有何建议,我可以保留索引及其数据并从同一索引中删除一些旧数据?
这是我正在运行的请求。
curl -X GET "1localhost:9200/produdtion-index/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"bool": {
"must": [
{ "range": { "submitDate": { "lte": "20200421" } } }
]
}
}
}
'
【问题讨论】:
-
你得到什么错误?诸如“达到每个分片的最大文档数”之类的东西?
-
如果您缺少存储空间,则很难解决这些问题。 在索引数据之前,您应该根据需要规划存储空间。现在,如果你想继续前进,你应该增加你的存储空间
-
删除文档不会立即回收空间,只是在底层段文件中标记了已删除的文档,因此短期内不会解决您的问题。你可以尝试做的是forcemerge the index,但如果你缺少空间,它可能无法正常工作,因为该过程将需要额外的空间来重写没有删除文档的段。
-
这只是表示 forcemerge 调用成功运行,仅此而已。你看到一些回收的空间吗?
-
正如我所说,调用 forcemerge 是创可贴的,您需要在索引数据之前提供足够的磁盘空间。现在你最好的选择是增加磁盘空间(存储很便宜)
标签: elasticsearch