【发布时间】:2021-06-16 13:18:33
【问题描述】:
我正在尝试在 elasticsearch 中生成嵌套的 must 和 should 查询以模拟以下条件:
( (brandsvisited ilike '%adidas%' or brandsvisited ilike '%skechers%' ) or( placecategory ilike '%Pizza Restaurant Visitors%' or placecategory ilike '%Grocery Store Visitors%' ) and( gender='Male' ) ) and polygonid = '1465'
我在 elasticsearch 中创建了以下查询。
"query": {
"bool": {
"must": [
{"term": {"polygonid": "1465"}},
{"term": {"gender": "Male"}},
{
"bool": {
"should": [
{"term": {"brandsvisited": "adidas"}},
{"term": {"brandsvisited": "skechers"}}
],"minimum_should_match": 1
}
},
{
"bool": {
"should": [
{"term": {"placecategory": "Pizza Restaurant Visitors"}},
{"term": {"placecategory": "Grocery Store Visitors"}}
],"minimum_should_match": 1
}
}
]
}
}
上述查询返回零个结果。但是,如果我删除最后一个布尔值应该查询,它会返回结果。不知道我哪里出错了。
【问题讨论】:
-
如果您必须搜索“%Pizza Restaurant visitor%”,为什么还要使用术语查询?
-
@TusharShahi 我也可以使用 match...我对 elasticsearch 完全陌生,不确定哪个是正确的。
-
检查这个stackoverflow.com/questions/26001002/…。查看 ESCoder 提到的匹配短语。
-
@TusharShahi 谢谢你的问题...我试过
match,它开始返回数据
标签: elasticsearch elasticsearch-query