使用术语汇总返回几个字段

时间:2018-08-09 19:59:29

标签: elasticsearch

通过这种聚合:

  "some_agg":{  
     "terms":{  
        "size":10,
        "field":"name.keyword"
     },
     "aggs":{  
        "bucket_sort_agg":{  
           "bucket_sort":{  
              "sort":[  
                 {  
                    "_count":{  
                       "order":"desc"
                    }
                 }
              ]
           }
        }
     }
  }

我收到类似的东西:

  "buckets": [
    {
      "key": "some name",
      "doc_count": 2035
    },
    {
      "key": "other name",
      "doc_count": 1017
    },
    {

如果文档中还有其他字段,例如电子邮件,是否也可以接收该字段?而不使用嵌套聚合。

1 个答案:

答案 0 :(得分:0)

汇总不返回文档,而是汇总文档。具有name: some name的2035年文档的其他字段可能具有完全不同的值。

如果需要,可以在其他字段上添加其他terms子聚合,以将2035文档拆分为更精细的存储桶。

最终,您可以添加top_hits子聚合,以返回每个子子存储桶的匹配数据(即实际文档)。

例如:

"some_agg":{  
     "terms":{  
        "size":10,
        "field":"name.keyword"
     },
     "aggs":{  
        "another_field": {                <--- split on another field
          "terms": {
            "field": "another_field"
          },
          "aggs": {
            "hits": {                     <--- show all the hits for each sub-bucket
              "top_hits": {}
            }
          }
        },
        "bucket_sort_agg":{  
           "bucket_sort":{  
              "sort":[  
                 {  
                    "_count":{  
                       "order":"desc"
                    }
                 }
              ]
           }
        }
     }
  }