0

インデックスで次のフィールドを検索します。

  • 個人名(文字列)
  • 組織名(文字列)
  • プロファイル(文字列)
  • 場所(文字列)
  • 全国(ブール値)

ユーザーが「ハミルトン」で「検眼医」を検索し、私たちのインデックスの検眼医が自分自身を「全国」としてリストしている場合 (ただし、特にハミルトンではありません)、望ましい動作は検眼医がハミルトンの結果とともに表示されることです - 事実上無視します。場所の要件。

現在、multi_matchクエリを実行しています。その例を以下に示します。

{
    "query": {
        "filtered" : {
            "query" : {
                "multi_match": {
                    "query": "optometrist",
                    "zero_terms_query": "all",
                    "operator": "and",
                    "fields": [
                        "individual_name^1.2",
                        "organisation_name^1.5",
                        "profile",
                        "accreditations"
                    ]
                }
            },
            "filter": {
                "and": [{
                    "term": {
                        "locations" : "hamilton"
                    }
                }],
            }
        }
    }
}

"nationwide": "yes"場所に関係なく、このクエリに対して を含むドキュメントが返されるように、これをどのように変更できますか?

orの下でクエリを試しましたandが、もちろん無視されましたmulti_match

4

1 に答える 1

2

これにより、望ましい結果が得られると思います。

{
    "query": {
        "filtered" : {
            "query" : {
                "multi_match": {
                    "query": "optometrist",
                    "zero_terms_query": "all",
                    "operator": "and",
                    "fields": [
                        "individual_name^1.2",
                        "organisation_name^1.5",
                        "profile",
                        "accreditations"
                    ]
                }
            },
            "filter": {
                "or": [
                        {"term": {"locations" : "hamilton"}},
                        {'term' : {'nationwide' : 'yes'}}        
                 ],
            }
        }
    }
}
于 2013-11-08T07:37:05.583 に答える