我试图通过以下查询查询有关elasticsearch中文档的统计信息。问题是,我试图忽略具有某些值的文件logger
,但我不知道如何。下面的查询将所有正确的文档选择为该集合,但它不排除具有不希望的值的文档。在弹性搜索中过滤OUT匹配文档与聚合
任何建议,非常欢迎。
{
"query": {
"bool": {
"filter": {
"bool": {
"must_not": {
"terms": {
"logger": [
"experimentsplitsegmentlogger_errors",
"ExperimentLogger"
]
}
}
}
},
"must_not": {
"terms": {
"logger": [
"experimentsplitsegmentlogger_errors",
"ExperimentLogger"
]
}
},
"must": {
"exists": {
"field": "count"
}
}
}
},
"aggs": {
"keys": {
"filter": {
"bool": {
"must_not": {
"terms": {
"logger": [
"experimentsplitsegmentlogger_errors",
"ExperimentLogger"
]
}
}
}
},
"terms": {
"field": "logger"
},
"aggs": {
"hostnames": {
"terms": {
"field": "hostname"
},
"aggs": {
"pids": {
"terms": {
"field": "pid"
},
"aggs": {
"time_stats": {
"stats": {
"field": "timestamp"
}
},
"count_stats": {
"stats": {
"field": "count"
}
}
}
}
}
}
}
}
},
"size": 0
}
您的过滤器和术语聚合是在同一水平上,条款必须要一个级别嵌套在'aggs' filter'的',为什么你有过滤器的3倍,一周时间应该工作,如果它是正确的执行。 –
@SumitKumar我有三次,因为它不工作。如果您能以您的意思为例来回答问题,我将不胜感激,因为我发现您的意思不明确。 – Marcin