ES に複数一致クエリがあり、フィルターを追加したいと考えています。
{
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^2", "message" ]
}
}
このフィルターを追加するための構文は何ですか?
私は試した:
{
"multi_match" => {
"query" => "list",
"fields" => [ "username" ]
},
"filter" => {
"term" => { "username" => "slimkicker"}
}
}
ベストアンサー1
必要に応じて、フィルターを適切な位置に配置する必要があります。次の 2 つのオプションがあります。
トップレベルのフィルターを使用し、フィルターを検索結果にのみ適用し、ファセットには適用しません。
{
"query" : {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^2", "message" ]
}
},
"filter" : {
"term" : { "username": "slimkicker" }
}
}
フィルタークエリを使用して、検索結果とファセットの両方にフィルターを適用します。
{
"query" : {
"filtered" : {
"query" : {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^2", "message" ]
}
},
"filter" : {
"term" : { "username": "slimkicker" }
}
}
}
}