検索シャードAPI

検索リクエストが実行されるインデックスとシャードを返します。

Python

  1. resp = client.search_shards(
  2. index="my-index-000001",
  3. )
  4. print(resp)

Ruby

  1. response = client.search_shards(
  2. index: 'my-index-000001'
  3. )
  4. puts response

Js

  1. const response = await client.searchShards({
  2. index: "my-index-000001",
  3. });
  4. console.log(response);

コンソール

  1. GET /my-index-000001/_search_shards

リクエスト

GET /<target>/_search_shards

前提条件

  • Elasticsearchのセキュリティ機能が有効な場合、ターゲットデータストリーム、インデックス、またはエイリアスに対して、view_index_metadataまたはmanage インデックス権限を持っている必要があります。

説明

検索シャードAPIは、検索リクエストが実行されるインデックスとシャードを返します。これは、ルーティングやシャードの優先順位に関する問題を解決したり、最適化を計画したりする際に役立つフィードバックを提供します。フィルタリングされたエイリアスが使用される場合、フィルターはindicesセクションの一部として返されます。

パスパラメータ

  • <target>
  • (オプション、文字列)検索するデータストリーム、インデックス、およびエイリアスのカンマ区切りリスト。ワイルドカード(*)をサポートします。すべてのデータストリームとインデックスを検索するには、このパラメータを省略するか、*または_allを使用します。

クエリパラメータ

  • allow_no_indices
  • (オプション、ブール値)falseの場合、リクエストは、ワイルドカード式、インデックスエイリアスまたは_allの値が欠落または閉じたインデックスのみをターゲットにする場合、エラーを返します。この動作は、リクエストが他のオープンインデックスをターゲットにしている場合でも適用されます。たとえば、foo*,bar*をターゲットにするリクエストは、fooで始まるインデックスが存在するが、barで始まるインデックスが存在しない場合、エラーを返します。
    デフォルトはtrueです。
  • expand_wildcards
  • (オプション、文字列)ワイルドカードパターンが一致できるインデックスのタイプ。リクエストがデータストリームをターゲットにできる場合、この引数はワイルドカード式が隠れたデータストリームに一致するかどうかを決定します。カンマ区切りの値(open,hiddenなど)をサポートします。有効な値は:
    • all
    • すべてのデータストリームまたはインデックスに一致します。 隠れたものも含まれます。
    • open
    • オープンで非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。
    • closed
    • 閉じた非隠れたインデックスに一致します。また、非隠れたデータストリームにも一致します。データストリームは閉じることができません。
    • hidden
    • 隠れたデータストリームと隠れたインデックスに一致します。openclosed、またはその両方と組み合わせる必要があります。
    • none
    • ワイルドカードパターンは受け付けられません。
      デフォルトはopenです。
  • ignore_unavailable
  • (オプション、ブール値)falseの場合、リクエストは欠落または閉じたインデックスをターゲットにする場合、エラーを返します。デフォルトはfalseです。
  • local
  • (オプション、ブール値)trueの場合、リクエストはローカルノードからのみ情報を取得します。デフォルトはfalseで、これはマスターノードから情報を取得することを意味します。
  • preference
  • (オプション、文字列)操作を実行するノードまたはシャードを指定します。デフォルトはランダムです。
  • routing
  • (オプション、文字列)特定のシャードに操作をルーティングするために使用されるカスタム値。

Python

  1. resp = client.search_shards(
  2. index="my-index-000001",
  3. )
  4. print(resp)

Ruby

  1. response = client.search_shards(
  2. index: 'my-index-000001'
  3. )
  4. puts response

Js

  1. const response = await client.searchShards({
  2. index: "my-index-000001",
  3. });
  4. console.log(response);

コンソール

  1. GET /my-index-000001/_search_shards

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

コンソール-結果

  1. {
  2. "nodes": ...,
  3. "indices" : {
  4. "my-index-000001": { }
  5. },
  6. "shards": [
  7. [
  8. {
  9. "index": "my-index-000001",
  10. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  11. "relocating_node": null,
  12. "primary": true,
  13. "shard": 0,
  14. "state": "STARTED",
  15. "allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"},
  16. "relocation_failure_info" : {
  17. "failed_attempts" : 0
  18. }
  19. }
  20. ],
  21. [
  22. {
  23. "index": "my-index-000001",
  24. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  25. "relocating_node": null,
  26. "primary": true,
  27. "shard": 1,
  28. "state": "STARTED",
  29. "allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"},
  30. "relocation_failure_info" : {
  31. "failed_attempts" : 0
  32. }
  33. }
  34. ],
  35. [
  36. {
  37. "index": "my-index-000001",
  38. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  39. "relocating_node": null,
  40. "primary": true,
  41. "shard": 2,
  42. "state": "STARTED",
  43. "allocation_id": {"id":"Nwl0wbMBTHCWjEEbGYGapg"},
  44. "relocation_failure_info" : {
  45. "failed_attempts" : 0
  46. }
  47. }
  48. ],
  49. [
  50. {
  51. "index": "my-index-000001",
  52. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  53. "relocating_node": null,
  54. "primary": true,
  55. "shard": 3,
  56. "state": "STARTED",
  57. "allocation_id": {"id":"bU_KLGJISbW0RejwnwDPKw"},
  58. "relocation_failure_info" : {
  59. "failed_attempts" : 0
  60. }
  61. }
  62. ],
  63. [
  64. {
  65. "index": "my-index-000001",
  66. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  67. "relocating_node": null,
  68. "primary": true,
  69. "shard": 4,
  70. "state": "STARTED",
  71. "allocation_id": {"id":"DMs7_giNSwmdqVukF7UydA"},
  72. "relocation_failure_info" : {
  73. "failed_attempts" : 0
  74. }
  75. }
  76. ]
  77. ]
  78. }

同じリクエストを指定し、今回はルーティング値を使用します:

Python

  1. resp = client.search_shards(
  2. index="my-index-000001",
  3. routing="foo,bar",
  4. )
  5. print(resp)

Ruby

  1. response = client.search_shards(
  2. index: 'my-index-000001',
  3. routing: 'foo,bar'
  4. )
  5. puts response

Js

  1. const response = await client.searchShards({
  2. index: "my-index-000001",
  3. routing: "foo,bar",
  4. });
  5. console.log(response);

コンソール

  1. GET /my-index-000001/_search_shards?routing=foo,bar

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

コンソール-結果

  1. {
  2. "nodes": ...,
  3. "indices" : {
  4. "my-index-000001": { }
  5. },
  6. "shards": [
  7. [
  8. {
  9. "index": "my-index-000001",
  10. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  11. "relocating_node": null,
  12. "primary": true,
  13. "shard": 2,
  14. "state": "STARTED",
  15. "allocation_id": {"id":"fMju3hd1QHWmWrIgFnI4Ww"},
  16. "relocation_failure_info" : {
  17. "failed_attempts" : 0
  18. }
  19. }
  20. ],
  21. [
  22. {
  23. "index": "my-index-000001",
  24. "node": "JklnKbD7Tyqi9TP3_Q_tBg",
  25. "relocating_node": null,
  26. "primary": true,
  27. "shard": 3,
  28. "state": "STARTED",
  29. "allocation_id": {"id":"0TvkCyF7TAmM1wHP4a42-A"},
  30. "relocation_failure_info" : {
  31. "failed_attempts" : 0
  32. }
  33. }
  34. ]
  35. ]
  36. }

指定されたルーティング値のため、検索は2つのシャードに対してのみ実行されます。