ドキュメントに記載されているように、次のことを実行しようとしています(これは現在では古くなっている可能性があります)。
https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html
そこで説明されているシナリオを、私が達成したいことに適応させます。
トピック 1 に関するブログ投稿用の blog_t1 と、トピック 2 に関するブログ投稿用の blog_t2 の 2 つのタイプがインデックスにあるとします。どちらのタイプにもタイトル フィールドがあります。
次に、blog_t1 のタイトル フィールドのみにクエリ ブースティングを適用します。
以前のバージョンの Elasticsearch では、blog_t1.title と blog_t2.title を使用して、タイプからフィールドを参照できました。そのため、そのうちの 1 つをブーストするのは、blog_t1.title^2 と同じくらい簡単でした。
しかし、Elasticsearch 2.x 以降、タイプの古いサポートの一部が削除されました (あいまいさを取り除くなどの正当な理由により)。これらの変更については、ここで説明します。
https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_20_mapping_changes.html
だから私の質問は、multi_match クエリで、Elasticsearch 2.x を使用して、blog_t2 ではなくタイプ blog_t1 に対してのみ、タイトルに対してそのブーストを行うにはどうすればよいですか?
クエリは次のようになりますが、type.fieldはもはや問題ではないため、これは明らかに機能しません。
GET /my_index/_search
{
"query": {
"multi_match": {
"query": "Hello World",
"fields": [
"blog_t1.title^2",
"blog_*.title",
"author",
"content"
]
}
}
}
参考までに、私がこれまでに見つけた唯一の解決策は、タイトルに別の名前を付けることです。たとえば、blog_t1 には title_boosted を、他のものには単にタイトルを付けます。これは、「タイトル」をユニークなこと。
ありがとう。