複数のデータストリームとインデックスを検索する
複数のデータストリームとインデックスを検索するには、search APIのリクエストパスにカンマ区切りの値として追加します。
次のリクエストは、my-index-000001
およびmy-index-000002
インデックスを検索します。
Python
resp = client.search(
index="my-index-000001,my-index-000002",
query={
"match": {
"user.id": "kimchy"
}
},
)
print(resp)
Ruby
response = client.search(
index: 'my-index-000001,my-index-000002',
body: {
query: {
match: {
'user.id' => 'kimchy'
}
}
}
)
puts response
Js
const response = await client.search({
index: "my-index-000001,my-index-000002",
query: {
match: {
"user.id": "kimchy",
},
},
});
console.log(response);
コンソール
GET /my-index-000001,my-index-000002/_search
{
"query": {
"match": {
"user.id": "kimchy"
}
}
}
インデックスパターンを使用して、複数のデータストリームとインデックスを検索することもできます。
次のリクエストは、my-index-*
インデックスパターンを対象としています。このリクエストは、my-index-
で始まるクラスタ内の任意のデータストリームまたはインデックスを検索します。
Python
resp = client.search(
index="my-index-*",
query={
"match": {
"user.id": "kimchy"
}
},
)
print(resp)
Ruby
response = client.search(
index: 'my-index-*',
body: {
query: {
match: {
'user.id' => 'kimchy'
}
}
}
)
puts response
Js
const response = await client.search({
index: "my-index-*",
query: {
match: {
"user.id": "kimchy",
},
},
});
console.log(response);
コンソール
GET /my-index-*/_search
{
"query": {
"match": {
"user.id": "kimchy"
}
}
}
クラスタ内のすべてのデータストリームとインデックスを検索するには、リクエストパスからターゲットを省略します。あるいは、_all
または*
を使用できます。
次のリクエストは同等であり、クラスタ内のすべてのデータストリームとインデックスを検索します。
Python
resp = client.search(
query={
"match": {
"user.id": "kimchy"
}
},
)
print(resp)
resp1 = client.search(
index="_all",
query={
"match": {
"user.id": "kimchy"
}
},
)
print(resp1)
resp2 = client.search(
index="*",
query={
"match": {
"user.id": "kimchy"
}
},
)
print(resp2)
Ruby
response = client.search(
body: {
query: {
match: {
'user.id' => 'kimchy'
}
}
}
)
puts response
response = client.search(
index: '_all',
body: {
query: {
match: {
'user.id' => 'kimchy'
}
}
}
)
puts response
response = client.search(
index: '*',
body: {
query: {
match: {
'user.id' => 'kimchy'
}
}
}
)
puts response
Js
const response = await client.search({
query: {
match: {
"user.id": "kimchy",
},
},
});
console.log(response);
const response1 = await client.search({
index: "_all",
query: {
match: {
"user.id": "kimchy",
},
},
});
console.log(response1);
const response2 = await client.search({
index: "*",
query: {
match: {
"user.id": "kimchy",
},
},
});
console.log(response2);
コンソール
GET /_search
{
"query": {
"match": {
"user.id": "kimchy"
}
}
}
GET /_all/_search
{
"query": {
"match": {
"user.id": "kimchy"
}
}
}
GET /*/_search
{
"query": {
"match": {
"user.id": "kimchy"
}
}
}
インデックスブースト
複数のインデックスを検索する際、indices_boost
パラメータを使用して、指定されたインデックスの1つまたは複数からの結果をブーストできます。これは、特定のインデックスからのヒットが他のインデックスからのヒットよりも重要な場合に便利です。
データストリームにはindices_boost
を使用できません。
Python
resp = client.search(
indices_boost=[
{
"my-index-000001": 1.4
},
{
"my-index-000002": 1.3
}
],
)
print(resp)
Ruby
response = client.search(
body: {
indices_boost: [
{
"my-index-000001": 1.4
},
{
"my-index-000002": 1.3
}
]
}
)
puts response
Js
const response = await client.search({
indices_boost: [
{
"my-index-000001": 1.4,
},
{
"my-index-000002": 1.3,
},
],
});
console.log(response);
コンソール
GET /_search
{
"indices_boost": [
{ "my-index-000001": 1.4 },
{ "my-index-000002": 1.3 }
]
}
エイリアスとインデックスパターンも使用できます:
Python
resp = client.search(
indices_boost=[
{
"my-alias": 1.4
},
{
"my-index*": 1.3
}
],
)
print(resp)
Ruby
response = client.search(
body: {
indices_boost: [
{
"my-alias": 1.4
},
{
"my-index*": 1.3
}
]
}
)
puts response
Js
const response = await client.search({
indices_boost: [
{
"my-alias": 1.4,
},
{
"my-index*": 1.3,
},
],
});
console.log(response);
コンソール
GET /_search
{
"indices_boost": [
{ "my-alias": 1.4 },
{ "my-index*": 1.3 }
]
}
複数の一致が見つかった場合、最初の一致が使用されます。たとえば、インデックスがalias1
に含まれ、my-index*
パターンに一致する場合、1.4
のブースト値が適用されます。