【发布时间】:2015-12-30 18:07:19
【问题描述】:
我想要实现的是通过唯一对(城市、州)进行聚合。根据 Elasticsearch 文档术语聚合不支持从同一文档中的多个字段收集术语。因此,我创建了一个这样的嵌套 agg:
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "address.city",
"size": 12
},
"aggs": {
"states": {
"terms": {
"field": "address.stateOrProvince"
},
"aggs": {
"topCity": {
"top_hits": {
"size": 1,
"sort": [
{
"price.value": {
"order": "desc" }}]}}}}}}}}
由于这种聚合,我得到如下响应:
{
"aggregations": {
"cities": {
"buckets": [
{
"key": "las vegas",
"doc_count": 5927,
"states": {
"buckets": [
{ "key": "nv", "doc_count": 5840 },
{ "key": "nm", "doc_count": 85 }
]
}
},
{
"key": "jacksonville",
"doc_count": 5689,
"states": {
"buckets": [
{ "key": "fl", "doc_count": 2986 },
{ "key": "nc", "doc_count": 1962 },
{ "key": "ar", "doc_count": 290 }]}}]}}}
问题是如何得到最深的doc_count排序的结果?
预期的有序列表应该是这样的:
- 内华达州拉斯维加斯 (5840)
- 佛罗里达州杰克逊维尔 (2986)
- 杰克逊维尔,北卡罗来纳 (1962)
- 杰克逊维尔,阿尔 (290)
- 拉斯维加斯,纳米 (85)
【问题讨论】:
-
根据你有two options的文件他们不可行吗?
-
@keety 我首先尝试了第二个选项,这是不可接受的,因为我需要一个 stored not_analyzed 字段。现在我正在尝试实现第一个选项,但得到“null,null”会导致聚合。似乎脚本没有连接这些值。
标签: elasticsearch aggregation elasticsearch-net