elasticsearch - 对象的存储桶聚合而不是关键字

标签 elasticsearch elasticsearch-aggregation

我的索引中包含嵌套对象locations的文档。

"locations": [
    {
        "name": "California",
        "coordinates": {
            "lat": 36.78,
            "long": -119.42
        }
    }, ...
]

我已经写了一个术语聚合来为出现在数据集中的位置名称创建存储桶:
"aggs": {
    "global": {
        "nested": {
            "path": "locations"
        },
        "aggs":{
            "locations": {
                "terms": { 
                    "field": "locations.name.keyword"
                }
            }
        }
    }
}

我想做的是为完整位置对象创建存储桶,以便在代码中使用名称和位置坐标。

是否有诸如术语聚合之类的东西适用于对象而不只是关键字?

或者(由于同一位置的坐标始终相同),是否可以返回每个铲斗的第一个位置的坐标以及计数?

最佳答案

好的,很好的开始。现在,要获取每个存储桶的第一个位置的坐标以及计数,您可以通过添加top_hits子聚合来做到这一点,如下所示:

"aggs": {
    "global": {
        "nested": {
            "path": "locations"
        },
        "aggs":{
            "locations": {
                "terms": { 
                    "field": "locations.name.keyword"
                },
                "aggs": {
                   "location": {
                      "top_hits": {
                         "size": 1,
                         "_source": ["locations.coordinates"]
                      }
                   }
                }
            }
        }
    }
}

关于elasticsearch - 对象的存储桶聚合而不是关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118644/

相关文章:

elasticsearch - 如何添加到不同的字段值并将其存储在 Elasticsearch python中的另一个字段中( Elasticsearch 字段操作)

elasticsearch - 根据特定的uniqueid字段在Elasticsearch中获取汇总计数

elasticsearch - 那种elasticsearch不会发射任何 pods 吗?

elasticsearch - Lucene 查询字符串 Elasticsearch "less than or equal to"[URI 搜索]

elasticsearch - 如何在Elasticsearch中查询父子关系

跨多个索引的多个字段的 Elasticsearch 聚合

elasticsearch - 计算消息的平均响应时间

python - 如何获得 Elasticsearch 页面增量元素

grails - Grails Elasticsearch插件问题

ElasticSearch:聚合一组收集的结果