Adding additional fields to ElasticSearch terms aggregation

It seems the best way to show intentions is top hits aggregation: “from each aggregated group select only one document”, and then extract platform from it:

aggs: {
  platforms: {
    terms: {field: 'platform.id'},
    aggs: {
      platform: {top_hits: {size: 1, _source: {include: ['platform']}}}
  }
}

This way, each bucked will look like:

{"key": 7,
  "doc_count": 529939,
  "platform": {
    "hits": {
      "hits": [{
       "_source": {
        "platform": 
          {"id": 7, "name": "Facebook", "url": "http://facebook.com"}
        }
      }]
    }
  },
}

Which is kinda too deeep (as usual with ES), but clean: bucket.platform.hits.hits.first._source.platform

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)