Elasticsearchで 2 つのインデックスを結合するクエリを実装する方法を教えてください。
Elasticsearchのマルチインデックス検索機能を使って、2つのインデックスに対する結合クエリを実行できます。_searchのリクエスト本文でインデックスを指定するには次のようにします。
- インデックスのエイリアスを設定する: まず、ジョイン問い合わせする 2 つのインデックスにエイリアスを作成します。エイリアスを使用すると、複数のインデックスをバインドして、複数のインデックスを一度に検索できます。Elasticsearch のエイリアス API を使用して、インデックスにエイリアスを作成できます。
- 例えば、IndexAとIndexB のエイリアスAB を作成する:
- POST /_aliases の場合、アクションは以下になります。
{
“actions”: [
{ “add”: { “index”: “indexA”, “alias”: “AB” } },
{ “add”: { “index”: “indexB”, “alias”: “AB” } }
]
} - エイリアス(AB)を使用した検索操作はインデックスAとインデックスBを一度に検索するため、ジョイントクエリを実行します。
- 複合クエリの実行の例:
- {
“query”: {
“term”: {
“field”: “value”
}
}
} - 这将返回匹配指定字段和值的文档,从索引A和索引B中进行搜索。
上記のステップを実行することで、Elasticsearchで2つのインデックスに対してジョインクエリを実行できるようになります。ここで注意すべきなのは、エイリアスは複数インデックスへの単なる参照であり、新しい物理インデックスを作成するものではない、ということです。そのため、ジョインクエリというのは実際には単一の検索リクエストで複数インデックスを検索する、ということになります。