分配
编辑分配编辑
允许的阶段:温热、冷。
更新索引设置以更改允许托管索引分片的节点并更改副本数。
在热阶段不允许进行分配操作。索引的初始分配必须手动完成或通过索引模板完成。
您可以配置此操作以修改分配规则和副本数,仅修改分配规则,或仅修改副本数。有关 Elasticsearch 如何使用副本进行扩展的更多信息,请参阅可扩展性和弹性。有关控制 Elasticsearch 在何处分配特定索引的分片的更多信息,请参阅索引级分片分配过滤。
选项编辑
您必须指定副本数或至少一个include
、exclude
或require
选项。空的分配操作无效。
有关使用自定义属性进行分片分配的更多信息,请参阅索引级分片分配过滤。
-
number_of_replicas
- (可选,整数)要分配给索引的副本数。
-
total_shards_per_node
- (可选,整数)单个 Elasticsearch 节点上索引的最大分片数。
-1
的值被解释为无限制。请参阅总分片数。 -
include
- (可选,对象)将索引分配给具有至少一个指定自定义属性的节点。
-
exclude
- (可选,对象)将索引分配给没有指定自定义属性的节点。
-
require
- (可选,对象)将索引分配给具有所有指定自定义属性的节点。
示例编辑
以下策略中的分配操作将索引的副本数更改为2
。任何单个节点上放置的索引分片不超过 200 个。否则,不会更改索引分配规则。
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { warm: { actions: { allocate: { number_of_replicas: 2, total_shards_per_node: 200 } } } } } } ) puts response
PUT _ilm/policy/my_policy { "policy": { "phases": { "warm": { "actions": { "allocate" : { "number_of_replicas" : 2, "total_shards_per_node" : 200 } } } } } }
使用自定义属性将索引分配给节点编辑
以下策略中的分配操作将索引分配给box_type
为_hot_或_warm_的节点。
要指定节点的box_type
,请在节点配置中设置自定义属性。例如,在elasticsearch.yml
中设置node.attr.box_type: hot
。有关更多信息,请参阅启用索引级分片分配过滤。
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { warm: { actions: { allocate: { include: { box_type: 'hot,warm' } } } } } } } ) puts response
PUT _ilm/policy/my_policy { "policy": { "phases": { "warm": { "actions": { "allocate" : { "include" : { "box_type": "hot,warm" } } } } } } }
根据多个属性将索引分配给节点编辑
分配操作还可以根据多个节点属性将索引分配给节点。以下操作根据box_type
和storage
节点属性分配索引。
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { cold: { actions: { allocate: { require: { box_type: 'cold', storage: 'high' } } } } } } } ) puts response
PUT _ilm/policy/my_policy { "policy": { "phases": { "cold": { "actions": { "allocate" : { "require" : { "box_type": "cold", "storage": "high" } } } } } } }
将索引分配给特定节点并更新副本设置编辑
以下策略中的分配操作将更新索引,使其每个分片具有一个副本,并分配给box_type
为_cold_的节点。
要指定节点的box_type
,请在节点配置中设置自定义属性。例如,在elasticsearch.yml
中设置node.attr.box_type: cold
。有关更多信息,请参阅启用索引级分片分配过滤。
response = client.ilm.put_lifecycle( policy: 'my_policy', body: { policy: { phases: { warm: { actions: { allocate: { number_of_replicas: 1, require: { box_type: 'cold' } } } } } } } ) puts response
PUT _ilm/policy/my_policy { "policy": { "phases": { "warm": { "actions": { "allocate" : { "number_of_replicas": 1, "require" : { "box_type": "cold" } } } } } } }