我对ElasticSearch聚合很新。我希望能够计算使用非空字段检索的文档数量。
我在这里做的是计算有多少文件没有name
字段。
{
"size": 3,
"query": {
"query_string": {
"query": "martin"
}
},
"aggs": {
"results_without_mb_id": {
"missing": {
"field": "name"
}
}
}
}
它有效,但我想做的恰恰相反。是否有existing
聚合?
答案 0 :(得分:5)
如上所述,只需将'missing'替换为'exists',并添加'filter'键,这样:
{ "size": 3,
"query": {
"query_string": {
"query" : "martin"
}
},
"aggs": {
"results_without_mb_id": {
"filter": {
"exists": {
"field": "name"
}
}
}
}
答案 1 :(得分:0)
你想使用" exists"过滤。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-exists-filter.html
这是一个示例,它查找authResult.codeID所在的所有文档,然后在其上运行聚合。:
GET prodstarbucks/authEvent/_search
{
"size": 0,
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"exists": {
"field": "authResult.codeID"
}
}
}
},
"aggs": {
"users": {
"terms": {
"field": "authInput.userName.userNameNotAnalyzed",
"size": 5
}
}
}
}
}
注意:如果您只想计算您甚至不需要聚合的文档,只需使用" total"返回的点击次数。