{ "city":"New York", "street":"Atlantic Avenue" }
{ "city":"New York", "street":"Hudson Street" }
{ "city":"New York", "street":"Fawn Court" }
{ "city":"Boston", "street":"Atlantic Avenue" }
{ "city":"Boston", "street":"Hudson Street" }
{ "city":"Boston", "street":"7th Avenue" }
{ "city":"Washington DC", "street":"Atlantic Avenue" }
{ "city":"Washington DC", "street":"Dogwood Drive" }
{ "city":"Washington DC", "street":"7th Avenue" }
如果我们每次街道出现时计算,我们都会得到以下信息:
| Street name | Number of times |
|-----------------|-----------------|
| Atlantic Avenue | 3 |
| Hudson Street | 2 |
| 7th Avenue | 2 |
| Hudson Street | 1 |
| Dogwood Drive | 1 |
我想建立一个直方图,说明有多少街道名称是唯一的,有多少街道名称被看到,等等......
为此,我应该获得条款聚合的结果,并将其发送到直方图聚合。
以上示例的结果如下:
| Street name count | Number of times |
|-------------------|-----------------|
| 1 | 2 |
| 2 | 2 |
| 3 | 1 |
我用Kibana和这个查询构建了第一个表:
curl -XGET 'http://localhost:9200/index1/type1/_search?pretty' -d '
{
"size": 0,
"aggs": {
"group_by_street": {
"terms": {
"field": "street"
}
}
}
}'
然后我尝试将此结果添加到直方图中:
curl -XGET 'http://localhost:9200/fingerprint/user/_search?pretty' -d '
{
"size": 0,
"aggs": {
"histogram_streets": {
"histogram": {
"field": "group_by_street>_count",
"interval": 1
},
"aggs": {
"group_by_street": {
"terms": {
"field": "street"
}
}
}
}
}
}'
但是,我检索了一个空桶。
我知道怎么办?
谢谢!
答案 0 :(得分:0)
我想根据“group_by_street”聚合的“doc_count”字段构建直方图
ES聚合是基于文档的,这意味着您可以使用存储桶聚合按文档上的字段进行分组,然后在每个存储桶内进一步聚合,作为另一个文档字段的嵌套聚合。您可以使用脚本以新颖的方式组合文档字段,但我从来没有看到过汇总桶数或桶中文档数的功能。
我唯一知道像group_by_street>_count
这样的路径表示法的地方是将嵌套聚合中的排序路径指定为documented here。
我建议您从术语聚合结果创建直方图客户端。在某种程度上,聚合这个术语已经是历史记录,因为它直接告诉您每个术语的文档数量。您只需要以对您有意义的方式订购每个桶元组(term,doc_count)。我不确定你是否可以直接在kibana中这样做。