gpt4 book ai didi

elasticsearch-2.0 - bool 查询不支持过​​滤器

转载 作者:行者123 更新时间:2023-12-03 19:53:45 25 4
gpt4 key购买 nike

这是使用 ES 2.0 抛出异常的查询:

bool query does not support filter

如何使用 Exists 和 Missing 查询?

询问:
{
"bool":{
"must":[
{
"bool":{
"should":[
{
"bool":{
"must":[
{
"range":{
"startDate":{
"lte":"2016-10-27T11:24:49.6616538+05:30"
}
}
}
],
"filter":[
{
"bool":{
"must_not":[
{
"exists":{
"field":"endDate"
}
}
]
}
}
]
}
}
]
}
}
]
}
}

最佳答案

首先,该错误通常来自在 1.x 版本的 Elasticsearch 上使用。 (在这种情况下,您需要一个 FilteredQuery )

接下来,您似乎有许多级别的不必要的嵌套。不确定您是否删除了其他东西来制作一个更简单的示例。我已经像这样重写了您的查询(并添加了外括号):

{
"query" : {
"bool" : {
"must" : [{
"range" : {
"startDate" : { "lte" : "2016-10-27T11:24:49.6616538+05:30" }
}
}
],
"filter" : [{
"bool" : {
"must_not" : [{
"exists" : { "field" : "endDate" }
}
]
}
}
]} }
}

您的原始查询和我重写的查询在我的服务器 (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" }
}
]} }
}

关于elasticsearch-2.0 - bool 查询不支持过​​滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com