2014-03-01 61 views
3

我有一个排序的elasticsearch直方图聚合,按原样正常工作。从Elasticsearch聚合的第一个和最后一个文档返回字段

我需要从每个聚合存储桶的第一个和最后一个文档中返回一个字段。

当前查询(红宝石风格的语法):

{ 
    query: { 
    filtered: { 
     filter: { 
     bool: { 
      must: [ 
      { term: { some_id: 'something' } }, 
      { range: { 
       completed_at: { 
        gte: start, 
        lte: end 
       } 
       } 
      } 
      ] 
     } 
     }, 
     _cache: true, 
     _cache_key: "special-query" 
    } 
    }, 
    aggs: { 
    intervals: { 
     histogram: { 
     field: 'completed_at', 
     interval: 24.hours.to_i, 
     min_doc_count: 0, 
     order: { _key: 'asc' } 
     }, 
     aggs: { 
     start_at: { min: { field: 'completed_at' } }, 
     end_at: { max: { field: 'completed_at' } }, 
     price_stats: { extended_stats: { field: 'rate' } }, 
     } 
    } 
    } 
} 

我已经通过文件搜索和广泛的一派,但无法找到任何解决方案。目前,我必须向数据库发送第二个查询以显式获取此字段的所有值,但我想将该功能转入我的elasticsearch查询中。

回答

6

你想返回每聚合权的结果吗?

这就是所谓的现场崩溃,而不幸的是,尚未Elasticsearch可用,请参阅:https://github.com/elasticsearch/elasticsearch/issues/256

更新2014年9月

按@bpierce在下面的评论:现在Elasticsearch 1.3.x出来了,现场倒塌通过top_hits聚合可用。我目前正在用类似于这个查询的方式使用它。

+0

这似乎是我正在寻找。可惜它没有实现,我不得不继续解决它与查询数据库。谢谢。 – Roganartu

+0

如果您不是百分百绑定到Elastichsearch,Solr DOES提供此功能。 https://wiki.apache.org/solr/FieldCollapsing –

+2

既然[Elasticsearch 1.3.x已发布](http://www.elasticsearch.org/blog/elasticsearch-1-3-0-released/),现场通过'top_hits'聚合可以获得折叠。我目前正在用类似于这个查询的方式使用它。 – bpeirce

相关问题