分配
允许的阶段:warm、cold。
更新索引设置以更改允许托管索引分片的节点以及更改副本的数量。
allocate 操作在 hot 阶段不允许使用。索引的初始分配必须手动完成或通过索引模板完成。
您可以配置此操作以同时修改分配规则和副本数量,或者仅修改分配规则,或者仅修改副本数量。有关 Elasticsearch 如何使用副本进行扩展的更多信息,请参阅为生产环境做好准备。有关控制 Elasticsearch 将特定索引的分片分配到何处的更多信息,请参阅索引级分片分配过滤。
您必须指定副本数量或至少一个 include
、exclude
或 require
选项。空的 allocate 操作是无效的。
有关使用自定义属性进行分片分配的更多信息,请参阅索引级分片分配设置。
number_of_replicas
- (可选,整数) 要分配给索引的副本数量。
total_shards_per_node
- (可选,整数) 单个 Elasticsearch 节点上的索引最大分片数。值
-1
被解释为无限制。参阅总分片数。 include
- (可选,对象) 将索引分配给具有至少一个指定自定义属性的节点。
exclude
- (可选,对象) 将索引分配给不具有任何指定自定义属性的节点。
require
- (可选,对象) 将索引分配给具有所有指定自定义属性的节点。
以下策略中的 allocate 操作将索引的副本数量更改为 2
。索引的分片在任何单个节点上不会超过 200 个。否则,索引分配规则保持不变。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"allocate" : {
"number_of_replicas" : 2,
"total_shards_per_node" : 200
}
}
}
}
}
}
以下策略中的 allocate 操作将索引分配给具有 box_type
为 hot 或 warm 的节点。
要指定节点的 box_type
,您可以在节点配置中设置自定义属性。例如,在 elasticsearch.yml
中设置 node.attr.box_type: hot
。有关更多信息,请参阅索引级分片分配设置 > 启用索引级分片分配过滤。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"allocate" : {
"include" : {
"box_type": "hot,warm"
}
}
}
}
}
}
}
allocate 操作还可以根据多个节点属性将索引分配给节点。以下操作根据 box_type
和 storage
节点属性分配索引。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"cold": {
"actions": {
"allocate" : {
"require" : {
"box_type": "cold",
"storage": "high"
}
}
}
}
}
}
}
以下策略中的 allocate 操作将索引更新为每个分片具有一个副本,并分配给具有 box_type
为 cold 的节点。
要指定节点的 box_type
,您可以在节点配置中设置自定义属性。例如,在 elasticsearch.yml
中设置 node.attr.box_type: cold
。有关更多信息,请参阅索引级分片分配设置 > 启用索引级分片分配过滤。
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"allocate" : {
"number_of_replicas": 1,
"require" : {
"box_type": "cold"
}
}
}
}
}
}
}