【发布时间】:2017-10-31 23:07:09
【问题描述】:
我应该如何将此 SQL 查询转换为 elasticsearch 查询?
SELECT * FROM myTable WHERE (id = 99 AND isonline <> 1) OR (id = 98 AND isonline <> 0)
如何进行具有多个布尔过滤器的查询? (奖金也将展示如何在 NEST 中做到这一点)
我想出的弹性查询不起作用,因为它包含重复的对象键。
{
"size": 1000,
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"term": {
"id": 99
}
}
],
"must_not": [
{
"term": {
"isonline": true
}
}
]
},
"bool": {
"must": [
{
"term": {
"id": 98
}
}
],
"must_not": [
{
"term": {
"isonline": false
}
}
]
}
}
}
elasticsearch 1.7 版
【问题讨论】:
-
是我还是你的
WHERE声明没有意义?(id = 99 AND isonline <> 1) AND (id = 98 AND isonline <> 0)id 是 99 和 98... -
@AndreiStefan 很抱歉你是对的。我已经将查询从使用“AND”编辑为使用“OR”,这就是我想要做的。基本上我想匹配 ID 和在线状态。对于我要查找的每个项目,我都会有这些条件。
-
呵呵,现在说得通了。我已经更新了我的答案。
标签: elasticsearch nest