【发布时间】:2017-06-06 03:49:30
【问题描述】:
我有一个名为“arrivalDate”的字段,该字段是一个字符串。每个文档都有一个字符串格式的到达日期(例如:20110128)。我希望我的输出是这样的(日期和具有该日期的记录数):
日期:该日期有多少条记录
20110105:5 条记录
20120501:2 条记录
20120602:15 条记录
我已经有了获取这些结果的查询。
我正在尝试在 PHP 中显示来自 Elasticsearch 的聚合结果。我希望我的输出是这样的:
日期:该日期有多少条记录
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 中显示所有日期以及它们在 PHP 中的记录数?
【问题讨论】:
-
你的
$results数组是什么样子的? -
@Auris 如果我在 Kibana 中运行脚本,它包含所有信息。它包含命中、总数、示例文档以及一些文档的聚合
-
@Auris 这是数组的聚合部分,这只是一个 sn-p: [aggregations] => Array ( [group_by_date] => Array ( [doc_count_error_upper_bound] => 11058 [sum_other_doc_count] => 818008 [buckets] => 数组 ([0] => 数组 ([key] => 20160614 [doc_count] => 18462) ) ) ) )
-
您可以尝试 Alex 的答案并在查询中执行此操作,但要从您的 sinpet php 访问数据看起来像:
foreach($result['aggregations']['group_by_date']['group_by_date']['buckets'] as $entry) { echo $entry['key']; echo $entry['doc_count']; }
标签: php elasticsearch