2016-06-28 86 views
0

我正在使用ES基于字段聚合结果。除此之外,我想检索进入每个集合存储桶的记录的_id。可能吗 ?在弹性搜索中获取聚集记录的_id字段

例如:下面的查询

{ 
    "aggs" : { 
     "genders" : { 
      "terms" : { "field" : "gender" } 
     } 
    } 
} 

的反应会是这样的

{ 
    ... 

    "aggregations" : { 
     "genders" : { 
      "doc_count_error_upper_bound": 0, 
      "sum_other_doc_count": 0, 
      "buckets" : [ 
       { 
        "key" : "male", 
        "doc_count" : 14 
       }, 
       { 
        "key" : "female", 
        "doc_count" : 14 
       }, 
      ] 
     } 
    } 
} 

现在,在这里我希望所有的14个男性的_id和14条女记录,使聚合也是如此。

为什么我需要这个?

说,因为我需要对这些记录进行一些后处理,即根据他们的性别在这些记录中插入一个新字段。当然,它不是那么微不足道,但我的用例就是这样。

在此先感谢!

回答

2

创建嵌套聚集像

{ 
    "aggs" : { 
     "genders" : { 
      "terms" : { "field" : "gender" } 
     }, 
     "aggs": { 
      "ids":{ 
       "terms" : {"field" : "_uid"} 
      } 
     } 
    } 
} 
+0

我没有得到任何标识桶。我认为它并不把_id当作一个领域。 – OneMoreError

+0

看起来你可能不得不使用'_uid'或索引'_id'字段 检查https://github.com/elastic/elasticsearch/issues/9298 – Deadlock

+0

太好了。有用。请编辑您的答案,以便我可以接受。 – OneMoreError