如何在elasticsearch中进行多值计数聚合
How to do multi value count aggregation in elasticsearch
有没有办法进行 "multi value count" 聚合?
它的工作方式与常规值计数相同:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html
但是会被用来统计多个字段。
例如我们有一个映射:
"properties" : {
"lastName" : { "type" : "string" },
"firstName" : { "type" : "string" },
"age" : { "type" : "string" }
}
以及以下 4 个文档:
{"lastName":"Smith"}
{"lastName":"Jacobson", "firstName":"Scott"}
{"lastName":"Bush", "age": 68}
{"lastName":"Obama", "firstName":"Barack", "age":53}
我想计算有年龄或名字的文件数量。
在我的例子中,聚合将 return 3.
有什么想法吗?我尝试使用脚本函数:
"aggregation_name" : {
"value_count" : {
"script" : "doc['age'].value + doc['firstName'].value"
}
}
但似乎没有用。
谢谢!
您可以使用 filter aggregation and Exists filter -
实现此目的
{
"aggs": {
"CountSpec": {
"filter": {
"bool": {
"should": [
{
"exists": {
"field": "age"
}
},
{
"exists": {
"field": "firstName"
}
}
]
}
}
}
}
}
有没有办法进行 "multi value count" 聚合? 它的工作方式与常规值计数相同:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-valuecount-aggregation.html
但是会被用来统计多个字段。
例如我们有一个映射:
"properties" : {
"lastName" : { "type" : "string" },
"firstName" : { "type" : "string" },
"age" : { "type" : "string" }
}
以及以下 4 个文档:
{"lastName":"Smith"}
{"lastName":"Jacobson", "firstName":"Scott"}
{"lastName":"Bush", "age": 68}
{"lastName":"Obama", "firstName":"Barack", "age":53}
我想计算有年龄或名字的文件数量。 在我的例子中,聚合将 return 3.
有什么想法吗?我尝试使用脚本函数:
"aggregation_name" : {
"value_count" : {
"script" : "doc['age'].value + doc['firstName'].value"
}
}
但似乎没有用。
谢谢!
您可以使用 filter aggregation and Exists filter -
实现此目的{
"aggs": {
"CountSpec": {
"filter": {
"bool": {
"should": [
{
"exists": {
"field": "age"
}
},
{
"exists": {
"field": "firstName"
}
}
]
}
}
}
}
}