将弹性搜索范围查询与过滤器组合,以排除其他字段的空值



我有一个Kibana报告,除了默认的日期查询外,我还设置了一个not emptyIdOrParentId: null过滤器。当我尝试从"开发工具"中执行此查询时;我不可能复制这种简单的行为。我已经尝试了无数的嵌入json树的组合,我最近的尝试是这样的:

{
"query": {
"bool": {
"must": [
{
"range": {
"timestamp": {
"gte": 1606694400000,
"lt": 1906299110458
}
}
},
{
"bool": {
"must": {
"exists": {
"field": "emptyIdOrParentId"
}
}
}
}
]
}
}
...

但是它一直返回带有emptyIdOrParentId: null的桶。如有任何帮助,我将不胜感激。

您可以添加一个query_string查询只是为了确保:

{
"query": {
"bool": {
"must": [
{
"range": {
"timestamp": {
"gte": 1606694400000,
"lt": 1906299110458,
"format": "epoch_millis"
}
}
},
{
"exists": {
"field": "emptyIdOrParentId"
}
},
{
"query_string": {
"query": "_exists_:emptyIdOrParentId AND NOT emptyIdOrParentId:null"
}
}
]
}
}
}

但是您的exists查询应该已经排除所有nullemptyIdOrParentIds。你能分享一下那些不应该返回的文档吗?

相关内容

  • 没有找到相关文章