簡體   English   中英

在PHP中顯示Elasticsearch查詢的所有匯總結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM