複数フィールドをまたいだ検索について

{
"query":
{ "multi_match":{
"query":"マラソン 札幌",
"type":"cross_fields",
"operator":"and",
"fields":["competition","city"]
}},
"explain":true
}

上記のようにmulti_matchを使用した複数フィールドをまたいだ検索の場合、
fieldsに設定したfieldに検索文に当てはまる単語を持つものを検索してくるかと思いますが、
「マラソン 北海道」の検索文を「マラソン」は「competition(競技種目)」への検索単語として、「札幌」は「city(開催地)」への検索単語として「competitionに『マラソン』を含み且つcityに『札幌』を含む項目」のように検索することはできるのでしょうか。

multi_matchのcross_fieldsだと、連結されたフィールドに対して検索語をあてているので、
お示しのような検索をするのは難しいかと思います。
シンプルにboolと各フィールドへのクエリを作る方がよさそうに思いました。

例えば以下のようなイメージです。

POST forum1031/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "competition": "マラソン"
          }
        },
        {
          "match_phrase": {
            "city": "札幌"
          }
        }
      ]
    }
  }
}
1 Like