[英]Displaying all aggregated results from Elasticsearch query in PHP
我有一個名為“ arrivalDate”的字段,該字段是一個字符串。 每個文檔都有一個字符串格式的到達日期(例如:20110128)。 我希望我的輸出是這樣的(日期和具有該日期的記錄數):
日期:該日期有多少記錄
20110105:5條記錄
20120501:2記錄
20120602:15條記錄
我已經有查詢來獲取這些結果。
我正在嘗試從Elasticsearch在PHP中顯示匯總結果。 我希望我的輸出是這樣的:
日期:該日期有多少記錄
20110105:5條記錄
20120501:2記錄
20120602:15條記錄這是我到目前為止的內容:
$json = '{"aggs": { "group_by_date": { "terms": { "field": "arrivalDate" } } } }';
$params = [
'index' => 'pickups',
'type' => 'external',
'body' => $json
];
$results = $es->search($params);
但是,我不知道如何在PHP中顯示結果。 例如,如果我想顯示文檔總數,我會echo $results['hits']['total']
我怎么能顯示所有日期以及它們在PHP中的記錄數量?
我建議以與構造查詢相同的方式使用聚合,根據我的經驗,它似乎可以更快地工作。 請看下面的代碼:
'aggs' => [
'group_by_date' => [
'terms' => [
'field' => 'arrivalDate',
'size' => 500
]
]
]
之后,您無需將典型的results['hits']['hits']
切換為results['aggregations']
。 然后,通過訪問響應中的存儲桶來訪問返回的數據。
為了從上面顯示的聚合訪問數據,可能類似於以下內容:
foreach ($results as $result){
foreach($result['buckets'] as $record){
echo($record['key']);
}
}
有一種更好的方法可以訪問數組中的數組,但是,上述循環系統對我來說效果很好。 如果您在訪問數據時遇到任何問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.