割り当て

許可されるフェーズ: ウォーム、コールド。

インデックス設定を更新して、インデックスシャードをホストできるノードを変更し、レプリカの数を変更します。

割り当てアクションはホットフェーズでは許可されていません。インデックスの初期割り当ては手動またはindex templatesを介して行う必要があります。

このアクションを構成して、割り当てルールとレプリカの数の両方、または割り当てルールのみ、またはレプリカの数のみを変更できます。Elasticsearchがスケーリングのためにレプリカをどのように使用するかについての詳細は、Plan for productionを参照してください。特定のインデックスのシャードをElasticsearchがどこに割り当てるかを制御する方法については、Index-level shard allocation filteringを参照してください。

オプション

レプリカの数を指定するか、少なくとも1つのincludeexclude、またはrequireオプションを指定する必要があります。空の割り当てアクションは無効です。

シャード割り当てにカスタム属性を使用する方法についての詳細は、Index-level shard allocation filteringを参照してください。

  • number_of_replicas
  • (オプション、整数) インデックスに割り当てるレプリカの数。
  • total_shards_per_node
  • (オプション、整数) 単一のElasticsearchノード上のインデックスの最大シャード数。-1の値は無制限と解釈されます。total shardsを参照してください。
  • include
  • (オプション、オブジェクト) 指定されたカスタム属性のいずれかを持つノードにインデックスを割り当てます。
  • exclude
  • (オプション、オブジェクト) 指定されたカスタム属性を持たないノードにインデックスを割り当てます。
  • require
  • (オプション、オブジェクト) 指定されたカスタム属性のすべてを持つノードにインデックスを割り当てます。

以下のポリシーの割り当てアクションは、インデックスのレプリカ数を2に変更します。インデックスの200シャードを単一のノードに配置することはできません。それ以外の場合、インデックスの割り当てルールは変更されません。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate": {
  8. "number_of_replicas": 2,
  9. "total_shards_per_node": 200
  10. }
  11. }
  12. }
  13. }
  14. },
  15. )
  16. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. warm: {
  7. actions: {
  8. allocate: {
  9. number_of_replicas: 2,
  10. total_shards_per_node: 200
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. )
  18. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. warm: {
  6. actions: {
  7. allocate: {
  8. number_of_replicas: 2,
  9. total_shards_per_node: 200,
  10. },
  11. },
  12. },
  13. },
  14. },
  15. });
  16. console.log(response);

コンソール

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate" : {
  8. "number_of_replicas" : 2,
  9. "total_shards_per_node" : 200
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }

カスタム属性を使用してノードにインデックスを割り当てる

以下のポリシーの割り当てアクションは、インデックスをhotまたはwarmbox_typeを持つノードに割り当てます。

ノードのbox_typeを指定するには、ノード設定にカスタム属性を設定します。たとえば、elasticsearch.ymlnode.attr.box_type: hotを設定します。詳細については、Enabling index-level shard allocation filteringを参照してください。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate": {
  8. "include": {
  9. "box_type": "hot,warm"
  10. }
  11. }
  12. }
  13. }
  14. }
  15. },
  16. )
  17. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. warm: {
  7. actions: {
  8. allocate: {
  9. include: {
  10. box_type: 'hot,warm'
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }
  18. )
  19. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. warm: {
  6. actions: {
  7. allocate: {
  8. include: {
  9. box_type: "hot,warm",
  10. },
  11. },
  12. },
  13. },
  14. },
  15. },
  16. });
  17. console.log(response);

コンソール

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate" : {
  8. "include" : {
  9. "box_type": "hot,warm"
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }

複数の属性に基づいてノードにインデックスを割り当てる

割り当てアクションは、複数のノード属性に基づいてインデックスをノードに割り当てることもできます。以下のアクションは、box_typeおよびstorageノード属性に基づいてインデックスを割り当てます。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "cold": {
  6. "actions": {
  7. "allocate": {
  8. "require": {
  9. "box_type": "cold",
  10. "storage": "high"
  11. }
  12. }
  13. }
  14. }
  15. }
  16. },
  17. )
  18. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. cold: {
  7. actions: {
  8. allocate: {
  9. require: {
  10. box_type: 'cold',
  11. storage: 'high'
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }
  18. }
  19. )
  20. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. cold: {
  6. actions: {
  7. allocate: {
  8. require: {
  9. box_type: "cold",
  10. storage: "high",
  11. },
  12. },
  13. },
  14. },
  15. },
  16. },
  17. });
  18. console.log(response);

コンソール

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "cold": {
  6. "actions": {
  7. "allocate" : {
  8. "require" : {
  9. "box_type": "cold",
  10. "storage": "high"
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }

特定のノードにインデックスを割り当て、レプリカ設定を更新する

以下のポリシーの割り当てアクションは、インデックスをシャードごとに1つのレプリカを持つように更新し、coldbox_typeを持つノードに割り当てます。

ノードのbox_typeを指定するには、ノード設定にカスタム属性を設定します。たとえば、elasticsearch.ymlnode.attr.box_type: coldを設定します。詳細については、Enabling index-level shard allocation filteringを参照してください。

Python

  1. resp = client.ilm.put_lifecycle(
  2. name="my_policy",
  3. policy={
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate": {
  8. "number_of_replicas": 1,
  9. "require": {
  10. "box_type": "cold"
  11. }
  12. }
  13. }
  14. }
  15. }
  16. },
  17. )
  18. print(resp)

Ruby

  1. response = client.ilm.put_lifecycle(
  2. policy: 'my_policy',
  3. body: {
  4. policy: {
  5. phases: {
  6. warm: {
  7. actions: {
  8. allocate: {
  9. number_of_replicas: 1,
  10. require: {
  11. box_type: 'cold'
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }
  18. }
  19. )
  20. puts response

Js

  1. const response = await client.ilm.putLifecycle({
  2. name: "my_policy",
  3. policy: {
  4. phases: {
  5. warm: {
  6. actions: {
  7. allocate: {
  8. number_of_replicas: 1,
  9. require: {
  10. box_type: "cold",
  11. },
  12. },
  13. },
  14. },
  15. },
  16. },
  17. });
  18. console.log(response);

コンソール

  1. PUT _ilm/policy/my_policy
  2. {
  3. "policy": {
  4. "phases": {
  5. "warm": {
  6. "actions": {
  7. "allocate" : {
  8. "number_of_replicas": 1,
  9. "require" : {
  10. "box_type": "cold"
  11. }
  12. }
  13. }
  14. }
  15. }
  16. }
  17. }