希望するノードの作成または更新API

この機能は、Elasticsearch ServiceElastic Cloud Enterprise、およびElastic Cloud on Kubernetesによる間接的な使用を目的としています。直接の使用はサポートされていません。

希望するノードを作成または更新します。

リクエスト

Python

  1. resp = client.perform_request(
  2. "PUT",
  3. "/_internal/desired_nodes/<history_id>/<version>",
  4. headers={"Content-Type": "application/json"},
  5. body={
  6. "nodes": [
  7. {
  8. "settings": {
  9. "node.name": "instance-000187",
  10. "node.external_id": "instance-000187",
  11. "node.roles": [
  12. "data_hot",
  13. "master"
  14. ],
  15. "node.attr.data": "hot",
  16. "node.attr.logical_availability_zone": "zone-0"
  17. },
  18. "processors": 8,
  19. "memory": "58gb",
  20. "storage": "2tb"
  21. }
  22. ]
  23. },
  24. )
  25. print(resp)

Js

  1. const response = await client.transport.request({
  2. method: "PUT",
  3. path: "/_internal/desired_nodes/<history_id>/<version>",
  4. body: {
  5. nodes: [
  6. {
  7. settings: {
  8. "node.name": "instance-000187",
  9. "node.external_id": "instance-000187",
  10. "node.roles": ["data_hot", "master"],
  11. "node.attr.data": "hot",
  12. "node.attr.logical_availability_zone": "zone-0",
  13. },
  14. processors: 8,
  15. memory: "58gb",
  16. storage: "2tb",
  17. },
  18. ],
  19. },
  20. });
  21. console.log(response);

コンソール

  1. PUT /_internal/desired_nodes/<history_id>/<version>
  2. {
  3. "nodes" : [
  4. {
  5. "settings" : {
  6. "node.name" : "instance-000187",
  7. "node.external_id": "instance-000187",
  8. "node.roles" : ["data_hot", "master"],
  9. "node.attr.data" : "hot",
  10. "node.attr.logical_availability_zone" : "zone-0"
  11. },
  12. "processors" : 8.0,
  13. "memory" : "58gb",
  14. "storage" : "2tb"
  15. }
  16. ]
  17. }

クエリパラメータ

  • master_timeout
  • (オプション、時間単位)マスターノードを待機する期間。タイムアウトが切れる前にマスターノードが利用できない場合、リクエストは失敗し、エラーが返されます。デフォルトは30sです。リクエストがタイムアウトしないことを示すために-1に設定することもできます。
  • dry_run
  • (オプション、ブール値)trueの場合、リクエストは更新をシミュレートし、dry_runフィールドがtrueに設定された応答を返します。

説明

このAPIは希望するノードを作成または更新します。外部オーケストレーターは、このAPIを使用してElasticsearchにクラスターのトポロジーを通知し、ノードの追加や削除などの将来の変更を含めることができます。この情報を使用することで、システムはより良い意思決定を行うことができます。

  1. ## 例
  2. この例では、履歴`````Ywkh3INLQcuPT49f6kcppA`````を持つ希望するノードの新しいバージョンが作成されます。このAPIは単調に増加するバージョンのみを受け入れます。
  3. #### Python
  4. ``````python
  5. resp = client.perform_request(
  6. "PUT",
  7. "/_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/100",
  8. headers={"Content-Type": "application/json"},
  9. body={
  10. "nodes": [
  11. {
  12. "settings": {
  13. "node.name": "instance-000187",
  14. "node.external_id": "instance-000187",
  15. "node.roles": [
  16. "data_hot",
  17. "master"
  18. ],
  19. "node.attr.data": "hot",
  20. "node.attr.logical_availability_zone": "zone-0"
  21. },
  22. "processors": 8,
  23. "memory": "58gb",
  24. "storage": "2tb"
  25. }
  26. ]
  27. },
  28. )
  29. print(resp)
  30. `

Js

  1. const response = await client.transport.request({
  2. method: "PUT",
  3. path: "/_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/100",
  4. body: {
  5. nodes: [
  6. {
  7. settings: {
  8. "node.name": "instance-000187",
  9. "node.external_id": "instance-000187",
  10. "node.roles": ["data_hot", "master"],
  11. "node.attr.data": "hot",
  12. "node.attr.logical_availability_zone": "zone-0",
  13. },
  14. processors: 8,
  15. memory: "58gb",
  16. storage: "2tb",
  17. },
  18. ],
  19. },
  20. });
  21. console.log(response);

コンソール

  1. PUT /_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/100
  2. {
  3. "nodes" : [
  4. {
  5. "settings" : {
  6. "node.name" : "instance-000187",
  7. "node.external_id": "instance-000187",
  8. "node.roles" : ["data_hot", "master"],
  9. "node.attr.data" : "hot",
  10. "node.attr.logical_availability_zone" : "zone-0"
  11. },
  12. "processors" : 8.0,
  13. "memory" : "58gb",
  14. "storage" : "2tb"
  15. }
  16. ]
  17. }

APIは次の結果を返します:

コンソール-結果

  1. {
  2. "replaced_existing_history_id": false,
  3. "dry_run": false
  4. }

さらに、プロセッサの範囲を指定することも可能です。これは、Elasticsearchノードが、Elasticsearchプロセスが使用できるプロセッサの数が下限範囲以上で上限範囲まで保証されるホストにデプロイされる環境で役立ちます。これは、cgroupsが使用されるLinuxデプロイメントで一般的なシナリオです。

Python

  1. resp = client.perform_request(
  2. "PUT",
  3. "/_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/101",
  4. headers={"Content-Type": "application/json"},
  5. body={
  6. "nodes": [
  7. {
  8. "settings": {
  9. "node.name": "instance-000187",
  10. "node.external_id": "instance-000187",
  11. "node.roles": [
  12. "data_hot",
  13. "master"
  14. ],
  15. "node.attr.data": "hot",
  16. "node.attr.logical_availability_zone": "zone-0"
  17. },
  18. "processors_range": {
  19. "min": 8,
  20. "max": 10
  21. },
  22. "memory": "58gb",
  23. "storage": "2tb"
  24. }
  25. ]
  26. },
  27. )
  28. print(resp)

Js

  1. const response = await client.transport.request({
  2. method: "PUT",
  3. path: "/_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/101",
  4. body: {
  5. nodes: [
  6. {
  7. settings: {
  8. "node.name": "instance-000187",
  9. "node.external_id": "instance-000187",
  10. "node.roles": ["data_hot", "master"],
  11. "node.attr.data": "hot",
  12. "node.attr.logical_availability_zone": "zone-0",
  13. },
  14. processors_range: {
  15. min: 8,
  16. max: 10,
  17. },
  18. memory: "58gb",
  19. storage: "2tb",
  20. },
  21. ],
  22. },
  23. });
  24. console.log(response);

コンソール

  1. PUT /_internal/desired_nodes/Ywkh3INLQcuPT49f6kcppA/101
  2. {
  3. "nodes" : [
  4. {
  5. "settings" : {
  6. "node.name" : "instance-000187",
  7. "node.external_id": "instance-000187",
  8. "node.roles" : ["data_hot", "master"],
  9. "node.attr.data" : "hot",
  10. "node.attr.logical_availability_zone" : "zone-0"
  11. },
  12. "processors_range" : {"min": 8.0, "max": 10.0},
  13. "memory" : "58gb",
  14. "storage" : "2tb"
  15. }
  16. ]
  17. }