从Elasticsearch聚合中的第一个和最后一个文档返回字段

rog*_*rtu 3 elasticsearch

我有一个排序的弹性搜索直方图聚合,工作正常.

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

当前查询(ruby风格的语法):

{
  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' } },
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我搜索了文档并广泛搜索,但找不到任何解决方案.目前,我必须向数据库发送第二个查询以显式获取此字段的所有值,但我想将该功能滚动到我的elasticsearch查询中.

Gee*_*Jan 6

您想要返回每个聚合的结果吗?

这称为Field Collapsing,遗憾的是Elasticsearch尚未提供,请参阅:https://github.com/elasticsearch/elasticsearch/issues/256

2014年9月更新

根据以下评论中的@bpierce:现在Elasticsearch 1.3.x已经用完,可以通过top_hits聚合获得字段折叠.我目前在类似于这个的查询中使用它.

  • 现在[Elasticsearch 1.3.x已经发布](http://www.elasticsearch.org/blog/elasticsearch-1-3-0-released/),可以通过`top_hits`聚合获得字段折叠.我目前在类似于这个的查询中使用它. (2认同)