这是使用ES 2.0引发异常的查询:
bool query does not support filter
Run Code Online (Sandbox Code Playgroud)
如何使用“存在和缺失”查询?
查询:
{
"bool":{
"must":[
{
"bool":{
"should":[
{
"bool":{
"must":[
{
"range":{
"startDate":{
"lte":"2016-10-27T11:24:49.6616538+05:30"
}
}
}
],
"filter":[
{
"bool":{
"must_not":[
{
"exists":{
"field":"endDate"
}
}
]
}
}
]
}
}
]
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
首先,该错误通常是由于在Elasticsearch 1.x版本上使用。(在这种情况下,您需要FilteredQuery)
接下来,您似乎有许多不必要的嵌套层次。不知道也许您是否剥离了其他内容以使示例更简单。我已经像这样重写了您的查询(并添加了大括号):
{
"query" : {
"bool" : {
"must" : [{
"range" : {
"startDate" : { "lte" : "2016-10-27T11:24:49.6616538+05:30" }
}
}
],
"filter" : [{
"bool" : {
"must_not" : [{
"exists" : { "field" : "endDate" }
}
]
}
}
]} }
}
Run Code Online (Sandbox Code Playgroud)
您的原始查询和我重写的查询都可以在我的服务器(v2.3.1)上正常工作,因此我猜测您确实拥有ES 1.x?
另外,如果您不利用Lucene评分,而只想返回文档(或应用您自己的排序),则可以完全删除过滤器并进一步简化它:
{
"query" : {
"bool" : {
"must" : [{
"range" : {
"startDate" : { "lte" : "2016-10-27T11:24:49.6616538+05:30"}
}
}
],
"must_not" : [{
"exists" : { "field" : "endDate" }
}
]} }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3771 次 |
| 最近记录: |