初次接触 ElasticSearch,对它的 filter 语法还不熟悉,自己尝试模拟以下 SQL 语句,但 ElasticSearch 语法解析一直失败,说语法错误。错误的地方应该在 or
这个条件,因为去掉该条件,这个语句是可以执行的。求大神帮忙,谢谢!
SELECT *
FROM users
WHERE
sex = 'male'
AND (city IN ('beijing', 'shanghai') OR home = 'guangzhou')
AND name LIKE '%xiaoming%'
使用 and or filter 进行查询,其 json 参数如下:
{
"query": {
"filtered": {
"filter": {
"and": {
"0": {
"term": {
"sex": "male"
}
},
"or": [
{
"terms": {
"city": [
"beijing",
"shanghai"
]
}
},
{
"term": {
"home": "guangzhou"
}
}
]
}
},
"query": {
"constant_score": {
"query": {
"match": {
"name": "xiaoming"
}
}
}
}
}
}
}
Elastic大神都不经常来这里,以后去开源中国问吧。
你可以这样写