正在运行查询:
{
"query": {
"bool":
{ "must_not":{"exists":{"field":"ParentId"}},
"should":[
{"query_string":{"default_field":"Name","query":"*es*"}}
]
}
}
}
我得到包含ParentId=null
子字符串的Name
和es
的文档。
我需要通过另一个字段的子字符串添加另一个条件过滤器:
{
"query": {
"bool":
{ "must_not":{"exists":{"field":"ParentId"}},
"should":[
{"query_string":{"default_field":"Name","query":"*ewr*"}},
{"wildcard":{"OrganizationPath":{"wildcard":"1_6_32*"}}}
]
}
}
}
现在Name
的筛选器停止工作。
再次尝试,结果相同:
{
"query": {
"bool":
{ "must_not":{"exists":{"field":"ParentId"}},
"should":[
{"query_string":{"default_field":"Name","query":"*ewr*"}},
{"query_string":{"default_field":"OrganizationPath", "query": "1_6_32*"}}
]
}
}
}
为什么以及如何解决?
答案 0 :(得分:1)
如果您希望所有约束都匹配,则需要将should
替换为filter
{
"query": {
"bool":
{ "must_not":{"exists":{"field":"ParentId"}},
"filter":[
{"query_string":{"default_field":"Name","query":"*ewr*"}},
{"query_string":{"default_field":"OrganizationPath", "query": "1_6_32*"}}
]
}
}
}
请注意,如果您需要评分,可以使用must
代替filter
,否则filter
可以满足您的需求。