假设我们有以下过滤:field > 0 AND field != value
我对 elasticsearch 必须使用 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 子句中的布尔查询),但在验证查询时会产生错误:
org.elasticsearch.index.query.QueryParsingException: [_na] query malformed, no field after start_object'}
这个错误是什么意思?正确的形式是怎样的?为什么有这么多过滤结果的方法?