複数のデータストリームとインデックスを検索する

複数のデータストリームとインデックスを検索するには、search APIのリクエストパスにカンマ区切りの値として追加します。

次のリクエストは、my-index-000001およびmy-index-000002インデックスを検索します。

Python

  1. resp = client.search(
  2. index="my-index-000001,my-index-000002",
  3. query={
  4. "match": {
  5. "user.id": "kimchy"
  6. }
  7. },
  8. )
  9. print(resp)

Ruby

  1. response = client.search(
  2. index: 'my-index-000001,my-index-000002',
  3. body: {
  4. query: {
  5. match: {
  6. 'user.id' => 'kimchy'
  7. }
  8. }
  9. }
  10. )
  11. puts response

Js

  1. const response = await client.search({
  2. index: "my-index-000001,my-index-000002",
  3. query: {
  4. match: {
  5. "user.id": "kimchy",
  6. },
  7. },
  8. });
  9. console.log(response);

コンソール

  1. GET /my-index-000001,my-index-000002/_search
  2. {
  3. "query": {
  4. "match": {
  5. "user.id": "kimchy"
  6. }
  7. }
  8. }

インデックスパターンを使用して、複数のデータストリームとインデックスを検索することもできます。

次のリクエストは、my-index-*インデックスパターンを対象としています。このリクエストは、my-index-で始まるクラスタ内の任意のデータストリームまたはインデックスを検索します。

Python

  1. resp = client.search(
  2. index="my-index-*",
  3. query={
  4. "match": {
  5. "user.id": "kimchy"
  6. }
  7. },
  8. )
  9. print(resp)

Ruby

  1. response = client.search(
  2. index: 'my-index-*',
  3. body: {
  4. query: {
  5. match: {
  6. 'user.id' => 'kimchy'
  7. }
  8. }
  9. }
  10. )
  11. puts response

Js

  1. const response = await client.search({
  2. index: "my-index-*",
  3. query: {
  4. match: {
  5. "user.id": "kimchy",
  6. },
  7. },
  8. });
  9. console.log(response);

コンソール

  1. GET /my-index-*/_search
  2. {
  3. "query": {
  4. "match": {
  5. "user.id": "kimchy"
  6. }
  7. }
  8. }

クラスタ内のすべてのデータストリームとインデックスを検索するには、リクエストパスからターゲットを省略します。あるいは、_allまたは*を使用できます。

次のリクエストは同等であり、クラスタ内のすべてのデータストリームとインデックスを検索します。

Python

  1. resp = client.search(
  2. query={
  3. "match": {
  4. "user.id": "kimchy"
  5. }
  6. },
  7. )
  8. print(resp)
  9. resp1 = client.search(
  10. index="_all",
  11. query={
  12. "match": {
  13. "user.id": "kimchy"
  14. }
  15. },
  16. )
  17. print(resp1)
  18. resp2 = client.search(
  19. index="*",
  20. query={
  21. "match": {
  22. "user.id": "kimchy"
  23. }
  24. },
  25. )
  26. print(resp2)

Ruby

  1. response = client.search(
  2. body: {
  3. query: {
  4. match: {
  5. 'user.id' => 'kimchy'
  6. }
  7. }
  8. }
  9. )
  10. puts response
  11. response = client.search(
  12. index: '_all',
  13. body: {
  14. query: {
  15. match: {
  16. 'user.id' => 'kimchy'
  17. }
  18. }
  19. }
  20. )
  21. puts response
  22. response = client.search(
  23. index: '*',
  24. body: {
  25. query: {
  26. match: {
  27. 'user.id' => 'kimchy'
  28. }
  29. }
  30. }
  31. )
  32. puts response

Js

  1. const response = await client.search({
  2. query: {
  3. match: {
  4. "user.id": "kimchy",
  5. },
  6. },
  7. });
  8. console.log(response);
  9. const response1 = await client.search({
  10. index: "_all",
  11. query: {
  12. match: {
  13. "user.id": "kimchy",
  14. },
  15. },
  16. });
  17. console.log(response1);
  18. const response2 = await client.search({
  19. index: "*",
  20. query: {
  21. match: {
  22. "user.id": "kimchy",
  23. },
  24. },
  25. });
  26. console.log(response2);

コンソール

  1. GET /_search
  2. {
  3. "query": {
  4. "match": {
  5. "user.id": "kimchy"
  6. }
  7. }
  8. }
  9. GET /_all/_search
  10. {
  11. "query": {
  12. "match": {
  13. "user.id": "kimchy"
  14. }
  15. }
  16. }
  17. GET /*/_search
  18. {
  19. "query": {
  20. "match": {
  21. "user.id": "kimchy"
  22. }
  23. }
  24. }

インデックスブースト

複数のインデックスを検索する際、indices_boostパラメータを使用して、指定されたインデックスの1つまたは複数からの結果をブーストできます。これは、特定のインデックスからのヒットが他のインデックスからのヒットよりも重要な場合に便利です。

データストリームにはindices_boostを使用できません。

Python

  1. resp = client.search(
  2. indices_boost=[
  3. {
  4. "my-index-000001": 1.4
  5. },
  6. {
  7. "my-index-000002": 1.3
  8. }
  9. ],
  10. )
  11. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. indices_boost: [
  4. {
  5. "my-index-000001": 1.4
  6. },
  7. {
  8. "my-index-000002": 1.3
  9. }
  10. ]
  11. }
  12. )
  13. puts response

Js

  1. const response = await client.search({
  2. indices_boost: [
  3. {
  4. "my-index-000001": 1.4,
  5. },
  6. {
  7. "my-index-000002": 1.3,
  8. },
  9. ],
  10. });
  11. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "indices_boost": [
  4. { "my-index-000001": 1.4 },
  5. { "my-index-000002": 1.3 }
  6. ]
  7. }

エイリアスとインデックスパターンも使用できます:

Python

  1. resp = client.search(
  2. indices_boost=[
  3. {
  4. "my-alias": 1.4
  5. },
  6. {
  7. "my-index*": 1.3
  8. }
  9. ],
  10. )
  11. print(resp)

Ruby

  1. response = client.search(
  2. body: {
  3. indices_boost: [
  4. {
  5. "my-alias": 1.4
  6. },
  7. {
  8. "my-index*": 1.3
  9. }
  10. ]
  11. }
  12. )
  13. puts response

Js

  1. const response = await client.search({
  2. indices_boost: [
  3. {
  4. "my-alias": 1.4,
  5. },
  6. {
  7. "my-index*": 1.3,
  8. },
  9. ],
  10. });
  11. console.log(response);

コンソール

  1. GET /_search
  2. {
  3. "indices_boost": [
  4. { "my-alias": 1.4 },
  5. { "my-index*": 1.3 }
  6. ]
  7. }

複数の一致が見つかった場合、最初の一致が使用されます。たとえば、インデックスがalias1に含まれ、my-index*パターンに一致する場合、1.4のブースト値が適用されます。