gpt4 book ai didi

php - 在PHP中显示Elasticsearch查询的所有汇总结果

转载 作者:行者123 更新时间:2023-12-03 00:06:51 25 4
gpt4 key购买 nike

我有一个名为“arrivalDate”的字段,该字段是一个字符串。每个文档都有一个字符串格式的到达日期(例如:20110128)。我希望我的输出是这样的(日期和具有该日期的记录数):

Date : how many records have that date

20110105 : 5 records

20120501 : 2 records

20120602 : 15 records



我已经有查询来获取这些结果。

我正在尝试从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']);
}
}

有一种更好的方法可以访问数组中的数组,但是,上述循环系统对我来说效果很好。如果您在访问数据时遇到任何问题,请告诉我。

关于php - 在PHP中显示Elasticsearch查询的所有汇总结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com