elasticsearch - 在嵌套字段上做直方图时,如何获取最后一个值?
问题描述
这与我之前的问题有关:
即使字段的映射在“文本”和“关键字”类型上,如何执行“总和”和“平均”聚合?
过程
我目前正在制定一个 Elasticsearch 查询,它将获取我所有基于范围EVERY DAY的文档,但我正在处理的字段是nested
一个。所以想象一下,就像我每天根据我的范围计算文件总数一样
重现场景
日期范围:9 月 15 日 - 9 月 17 日
9 月 15 日:找到 1000 个文档
9 月 16 日:找到 500 个文档
9 月 17 日:找到 1500 个文档
这是我的示例查询:
'aggs' => [
'ENGAGEMENT' => [
'nested' => [
'path' => "eng"
],
'aggs' => [
'ARTICLES' => [
//Use Histogram because the pub_date is of
//long data type
//Use interval 86400 to represent 1 day
'histogram' => [
'field' => "eng.date_updated",
"interval" => "86400",
]
]
]
]
]
这是我拥有的示例 Elasticsearch 文档:
对于上面给定的场景和示例,当前查询显示此输出
我的主要目标
有了布局的想法,我怎样才能每天检索嵌套字段的最后一个对象?
例如:
对于 9 月 15 日,我想检索当天的LAST
soc_like_count
对于 9 月 16 日,我还想检索当天的LAST soc_like_count,依此类推...
尝试过的解决方案
试图用 做实验,inner_hits
但看了一段时间后,inner_hits
只body
在 ES 查询部分可用
有什么方法可以使用弹性搜索查询来执行此操作吗?
解决方案
使用Top_hits子聚合
"aggs": {
"date": {
"date_histogram": {
"field": "eng.date_updated",
"interval": "month"
},
"aggs": {
"top_hits": { ---> added as sub aggregation to date_histogram
"top_hits": {
"sort": [
{
"date": { ---> replace by field name you want to sort
"order": "desc"
}
}
],
"size": 1
}
}
}
}
}
推荐阅读
- ansible - Ansible:如何通过 SSH 克隆私有 Git 存储库,并在目标上生成和加密密钥
- asp.net - Include 中使用的 Lambda 表达式在使用 where 时无效
- mongodb - MongoDB 查找项目,包括来自其他引用集合的数据
- javascript - 屏幕宽度较小时如何固定侧边栏的位置?
- java - 如何计算数组中每个元素的出现次数?
- arrays - Wordpress 定制器 - 为另一个控件使用设置值
- laravel - SQLSTATE [42S22]:未找到列:1054“字段列表”中的未知列“type_article_id”
- powershell - 使用Powershell,如何根据不同命名约定的重复文件的存在返回文件列表?
- javascript - 由于我的水平滚动 (LocomotiveScroll),无法更新我的鼠标位置
- javascript - 我可以在与我尝试激活它的文件不同的 javascript 文件中激活一个函数吗?