问题标签 [date-histogram]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
datetime - 按星期几过滤并按小时汇总
对于我的主人,我有一门编程课程,我必须在其中使用 Elasticsearch。我有一个包含几百万个 Ubereat 订单的数据集。每条记录都包含日期时间、餐厅、上车点和下车点。我必须区分不同的日期并报告该特定日期的订单数量。因此,例如,我设法找到了圣诞节每小时的订单数量。
我还设法找到了全年周一、周二、周三等的订单总量。现在,我必须将这两者结合起来。我需要知道在周一、周二、周三等 9:00 到 10:00、10:00 到 11:00、11:00 到 12:00 等之间全年下了多少订单。我已经包括我的尝试。但是,我确实收到一个错误:
RequestError(400, 'parsing_exception', '[bool] 格式错误的查询,预期 [END_OBJECT] 但找到 [FIELD_NAME]')
有人知道如何结合这个查询和聚合吗?
elasticsearch - 在 date_histogram + 嵌套 ES 查询中需要帮助
我需要在 Timestamp 上创建 15m 桶,然后在每个时间戳中,我需要对每种类型的书籍进行求和,当然还有书籍的总数。
例如,我的数据如下
我需要如下输出:
我已经尝试过下面的查询,现在我被嵌套查询困住了,以获取每个时间戳桶中每种书籍类型的总和。在这方面需要帮助。
elasticsearch - 将 date_histogram 与 fixed_interval (30d) 意外桶启动一起使用
我需要每 30 天(而不是一个月)汇总一次数据,所以我使用date_histogram
with"fixed_interval": "30d"
来获取该数据。例如,如果用户想要最近 90 天的聚合,则应该有 3 个桶:[90-60, 60-30, 30-0]。以今天的日期(2021 年 3 月 18 日)为例,我想要桶 [12 月 18 日、1 月 17 日、2 月 16 日]。
但是,我实际得到的是 [4-Dec,3-Jan,2-Feb,4-Mar]。第一个存储桶比任何可用数据都更早开始,这也意味着最终需要比预期更多的存储桶。
我发现您无法轻易判断您的存储桶何时开始(例如,我希望我的第一个存储桶在今天 - 90 天开始)。根据我能找到的内容(例如this),buckets 似乎从 1970-01-01 开始,并且文档也有点说这个(这个链接,虽然它没有深入影响影响)。
考虑到这一点,我发现我可以使用offset
“有趣的公式”,以便获得所需的正确存储桶。例如:
(显然这个查询不能直接工作,我在代码中构建变量,例如18-Mar-2021
偏移量是14
)
所以基本上offset
计算为我的下限日期和纪元之间的天数,然后将该值修改为 30。这似乎可行,但在代码审查中很难证明这种逻辑的合理性。有更好的解决方案吗?
postgresql - postgresql 查询等效于弹性搜索中具有扩展边界的日期直方图
我有一个包含以下列的表格:
第 1 列 | 第 2 列 | 时间戳 | event_id |
---|---|---|---|
c1v1 | c2v1 | 2021-03-11 00:00:00 | 1 |
c1v2 | c2v2 | 2021-03-11 01:03:00 | 1 |
c1v3 | c2v3 | 2021-03-12 10:00:00 | 2 |
c1v4 | c2v4 | 2021-03-13 20:00:00 | 1 |
c1v5 | c2v5 | 2021-03-13 11:00:00 | 2 |
c1v6 | c2v6 | 2021-03-13 00:00:00 | 3 |
c1v7 | c2v7 | 2021-03-14 00:00:00 | 2 |
我有start_time = 2021-03-10 05:14:00
和end_time = 2021-03-15 15:12:19
我正在对这些数据进行弹性搜索查询
- 从 start_time 到 end_time 分区 1 天
- 计算每个分区中的文档数(具有 0 个文档的分区也因为扩展边界)
- 对于每个分区,在 event_id 列中查找唯一值的数量
我需要帮助来创建一个相同的 sql 查询。
输出:
时间戳 | doc_count | 唯一值 |
---|---|---|
2021-03-10 | 0 | 0 |
2021-03-11 | 2 | 1 |
2021-03-12 | 1 | 1 |
2021-03-13 | 3 | 3 |
2021-03-14 | 1 | 1 |
2021-03-15 | 0 | 0 |
更新:我提出了这个查询,但我得到的值接近 es 中的值,但不准确。这也不会返回包含 0 个文档的日期。
其中 start_date 和 end_date 是 start_time 和 end_time 的 floor_dates
elasticsearch - 日期直方图桶聚合中缺少一些文档
我正在做如下聚合查询
我有一个文档,其中xxx
字段具有值b8f0ef01-a290-11eb-5338-36f595812d64
,created
字段具有值1619004973466
,指示格林威治标准时间 2021 年 4 月 21 日上午 11:36。与时间范围匹配的直方图存储桶中缺少此文档。
这是我得到的聚合响应的一部分
b8f0ef01-a290-11eb-5338-36f595812d64
以 2021 年 4 月 21 日 06:00 AM GMT的键开头的直方图存储桶中不存在1618984800000
(在我的情况下,存储桶的结束范围将是 12:00 PM GMT,因为固定间隔是 6h,并且文档很好地在里面范围)
有人可以提供这种行为的原因吗?
注意:当我将固定间隔更改为 30m 时,我会在有效存储桶范围内看到此文档。但我需要为我的情况使用一些更宽的间隔范围(以小时为单位)。
elasticsearch - 使用 Elasticsearch v.7.13.3 具有不同时区的日期直方图
我必须从时区的不同部分获取数据(例如纽约 -6.00 和罗马 +2.00)。在文档中,我有一个字段“时间戳”定义为“数据”,例如,我创建了一个“日期直方图”,例如从上午 8 点到上午 9 点。如何匹配 USA 8.00-9.00 和 ITA 8.00-9.00 数据以便比较同一时期的两个数据?
这是我的数据有两个不同的保险丝。2 个来自美国,2 个来自 ITA:
这是我的 date_histogram 查询:
提前感谢您的回复。
date - 使用elasticsearch中的日期直方图获取特定日期范围内的插入文档计数
我在 elasticsearch 中列出了包含各种文件的文档。文件如下所示。
我想以 1 天的间隔查找特定日期范围内存在的文档数量,比方说
2021-10-05T00:47:13.555Z to 2021-10-08T00:13:13.555Z
我正在尝试以下聚合结果。
预期的输出应该是:- 因为2021-10-06
我应该得到 2 个文档,2021-10-07
我应该得到 1 个文档,如果文档不存在,我应该得到计数为 0。