使用和组合多个布尔字段中的过滤器和术语

时间:2016-10-07 09:30:21

标签: elasticsearch elasticsearch-query

假设我们有以下过滤: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'}

这个错误是什么意思?正确的表格怎么样?为什么有这么多方法来过滤结果?

0 个答案:

没有答案