问题描述
我有什么:
- Elasticsearch(7.7.0)集群(amazon / opendistro-for-elasticsearch:1.8.0 Docker映像)
我想要什么:防止从热数据节点到热数据(将来会冷)进行分片分配和重定位。
我尝试了什么:
我为所有索引模板放置了"index.routing.allocation.require.data": "hot"
,所以新创建的索引将不会分配给除热数据节点以外的任何节点。效果很好。
无论如何,我不能限制碎片从热节点迁移到热节点。目前,我正在使用"cluster.routing.allocation.exclude._ip" : "warm data node ip"
来防止从热数据节点重定位到热数据节点。但是我可以在此过滤器中使用ILM吗?
我也尝试过
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.awareness.attributes": ["data"]
}
}
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.awareness.force.data.values": ["hot"]
}
}
,然后删除"cluster.routing.allocation.exclude._ip"
过滤器。碎片还是从热数据节点移到热数据节点。我想念什么?
解决方法
我认为您错过了ILM政策中的分配意识。 您的暖相定义应该具有
"allocate": {
"require": {
"data": "warm"
}
}
从您的定义中删除它,它应该可以解决您的问题。
为我全面了解ILM的最佳文章是 https://www.elastic.co/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management 您可以在“优化ILM策略以实现冷热模式”中找到完整的示例
,我必须更新旧设置的设置:
PUT my-index/_settings
{
"index.routing.allocation.require.data": "hot"
}
如果索引模板已更新,则某些索引模板下的索引将不会更新。