【发布时间】:2021-10-20 15:53:56
【问题描述】:
我有多个 elasticsearch 集群,每个集群都有相同的索引和相同的数据和相同数量的文档。但是索引大小有很大的不同。
我尝试使用merge api,但它没有帮助。问题是,因为这个 elasticsearch 最终会耗尽空间:
{
"state": "UNASSIGNED",
"primary": true,
"node": null,
"relocating_node": null,
"shard": 3,
"index": "local-deals-1624295772015",
"recovery_source":
{
"type": "EXISTING_STORE"
},
"unassigned_info":
{
"reason": "ALLOCATION_FAILED",
"at": "2021-08-18T19:14:20.472Z",
"failed_attempts": 20,
"delayed": false,
"details": "shard failure, reason [lucene commit failed], failure IOException[No space left on device]",
"allocation_status": "deciders_no"
}
}
我已将 elasticsearch 集群配置为每个节点不超过 2 个分片以提高查询性能。
鉴于这两个具有相同文档的集群,索引大小有 90% 的差异,这对我来说没有意义。有人可以解释这种行为吗?
我的快速解决方法是增加 EBS 音量。
回复@Val 的问题: 有多个文档被标记为删除。
"5": {
"health": "yellow",
"status": "open",
"index": "local-deals-1624295772015",
"uuid": "s7QDLtuhRN6HM_VwtVTB0Q",
"pri": "6",
"rep": "1",
"docs.count": "8911560",
"docs.deleted": "18826270",
"store.size": "37gb",
"pri.store.size": "19.9gb"
}
【问题讨论】:
-
首先,在第二个集群中,您有副本分片已经贡献了 2 倍。您还可以分享
GET _cat/indices?v的结果吗?您可能有很多文档被标记为已删除(例如,如果您经常更新它们)。 -
@Val 感谢您的输入,有多个文档被标记为删除,所以这似乎是个问题?你知道如何彻底清理被删除的文件吗?
-
stackoverflow.com/a/20608904/2704032 这将删除文档并回收空间,但
_forcemerge?only_expunge_deletes=trueAPI 的问题在于,它是一个阻塞调用,它会使 elasticsearch 集群对搜索请求没有响应。
标签: elasticsearch lucene