Access ES aggregation bucket list objects in laravel

- 1 answer

Ad

I am trying to access Elasticquent aggregation bucket list objects in laravel:

array:1 [▼   "group_by_law_year" => array:3 [▼
    "doc_count_error_upper_bound" => 0
    "sum_other_doc_count" => 0
    "buckets" => array:2 [▼
      0 => array:2 [▼
        "key" => "2013"
        "doc_count" => 2
      ]
      1 => array:2 [▼
        "key" => "2012"
        "doc_count" => 1
      ]
    ]   ] ]

I tried like $laws_y->getAggregations('group_by_law_year').get(), but no success. Anyone has an idea?

Ad

Answer

Ad

getAggregations will return an array (as shown in your output above), so you simply need to retrieve the buckets and iterate over them as shown below:

$buckets = $laws_y->getAggregations()['group_by_law_year']['buckets'];
foreach ($buckets as $bucket){
   echo $bucket['key'] . ' = ' . $bucket['doc_count'];
}
Ad
source: stackoverflow.com
Ad