假设我们有以下过滤:field > 0 AND field != value
我对弹性搜索必须使用bool查询表达该过滤器的许多方法有点混淆。考虑以下查询:
查询一个
"bool":{
"must_not":{
"term":{
"field": value
}
},
"must":{
"range":{
"field":{
"gt":0
}
}
}
}
查询2:
"bool":{
"must_not":{
"term":{
"field": value
}
},
"filter":{
"range":{
"field":{
"gt":0
}
}
}
}
查询3
"bool":{
"must":{
"bool":{
"must":{
"range":{
"field":{
"gte":value
}
}
},
"must_not":{
"field":value
}
}
}
}
查询1和2是否意味着相同的事情?虽然我在查询3的形式中看到了很多例子(在must | should | must_not子句中包含bool查询),但在验证查询时会产生错误:
org.elasticsearch.index.query.QueryParsingException: [_na] query malformed, no field after start_object'}
这个错误是什么意思?正确的表格怎么样?为什么有这么多方法来过滤结果?