问题标签 [elasticsearch-aggregation]
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.
elasticsearch - 重用 Elastisearch 聚合中的字段
我正在使用弹性搜索 1.6.0。这是我的聚合查询:
有什么办法可以添加三个 sum_trig_amber + sum_trig_red + sum_trig_green ?
elasticsearch - Elasticsearch Java API:文档计数的聚合过滤器
我想实现一个只返回频率高于某个阈值的文档的聚合。
例如,这里是获取所有文档及其计数的聚合
所以这给了我每个值的文档计数column_name
现在,可以说我不想要所有这些文件。我只想要那些doc_count
大于25
所以理想的结果是
[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"}]
我如何将这样的过滤器应用于我的聚合?我正在查看FilterBuilders
和过滤聚合,但它们用于对文档中的任何值应用过滤器。例如,我可以应用过滤器来仅获取val1 == xza
文件column_name
但这不是我要找的。我想在应用doc_cunt
聚合后为值应用阈值。
这可能吗?我正在使用 elasticsearch java api 版本 1.7.2
elasticsearch - 弹性搜索在桶聚合和基数上给出错误的结果
我正在编写一个弹性搜索查询来获取两个不同时间段的唯一用户。还有总用户。这是为了识别今天网站的唯一用户。
我打算做的是计算直到昨天的总用户和用户,然后减去 (total_users - users_until_yesterday) 以获得今天的唯一用户。
users_until_yesterday 是 before_and_after_today 聚合中的第一个桶。
当我运行这个查询时,我得到的 users_until_yesterday 的值超过了 total_users。我不知道原因
在此先感谢您的帮助。
更新:我现在通过使用precision_threshold 作为一个非常高的值让它工作。我认为一旦我的值超过 40,000,这将是一个问题,因为 40,000 是precision_threshold 的最大值。
python - Elasticsearch:时间范围聚合未按预期工作
我是弹性搜索域的新手。我正在学习并尝试它是否满足我的需求。
现在我正在学习elasticsearch中的聚合,我编写了以下python脚本来将一些时间序列数据摄取到elasticsearch中。
每 5 秒我创建一条新消息,其中包含:
- 时间戳(ISO8601 格式)
- 柜台
- 0 到 100 之间的随机数
对于每个新的一天,我都会创建一个新索引,logs_Y-m-D
并将其作为索引名称。
我将使用消息Counter
作为_id
. 计数器为每个新索引(每天)重置。
我运行了这个脚本30 分钟。接下来,使用 Sense,我使用以下聚合查询来查询 elasticsearch。
查询 #1:获取所有
查询 #2:汇总过去 1 小时的日志并为其生成统计信息。这显示了正确的结果。
查询 #3:聚合过去 1 分钟的日志并为其生成统计信息。聚合的文档数量与 1 小时聚合中的相同,理想情况下,它应该只聚合12-13 个日志。
查询 #4:聚合过去 15 秒的日志并为其生成统计信息。聚合的文档数量与 1 小时聚合中的相同,理想情况下,它应该只聚合3-4 个日志。
我的问题:
- 为什么 elasticsearch 无法理解 1 分 15 秒的范围?
- 我了解映射,但我不知道如何写一个,所以我没有写一个,这是导致这个问题的原因吗?
请帮忙!
查询 #1:获取所有
输出:
查询 #2:获取过去 1 小时的统计信息。
输出:
我得到 366 个条目,这是正确的。
查询 #3:获取最近 1 分钟的统计信息。
输出:
这是错误的,它不能是最近 1 分钟内的 407 个条目,它应该只有 12-13 个日志。
查询 #4:获取过去 15 秒的统计数据。
输出:
这也是错误的,它不能是最近 15 秒内的 407 个条目。它应该只有 3-4 个日志。
elasticsearch - 仅聚合最新文档
我有一个弹性索引,其中包含用户状态历史记录的文档。数据看起来像这样;
我想按状态名称与日期直方图聚合,但只针对当时相关的最后一个状态。所以结果可以是;
实际上计划是生成带有时间线的分组条形图,以显示状态随时间的变化。
我尝试了几种方法,例如聚合管道、热门歌曲,但没有取得任何进展。
任何帮助表示赞赏。
elasticsearch - Elasticsearch:使用度量聚合的结果来过滤存储桶的元素并运行其他聚合
给定一个数据集
我想执行以下聚合:
- 首先,我想使用术语 聚合按桶中的“类型”分组。
- 之后,我想使用extended_stats计算字段“值”的一些指标。
- 知道std_deviation_bounds(上限和下限)我想计算桶中元素的平均值,不包括范围之外的元素[std_deviation_bounds.lower,std_deviation_bounds.upper]
我的清单的第一点和第二点是微不足道的。我想知道第三点是否可以使用兄弟度量聚合结果的信息过滤掉桶中的元素并重新计算平均值。而且,如果是的话,我想知道我需要使用的聚合结构。
Elasticsearch 实例的版本是 5.0.0
python - 将 Elasticsearch 数据转换为更结构化的形式
我有两个字段子聚合:`['field1', 'field2']。这两个字段都是术语聚合。对于所有这些桶和嵌套以及桶嵌套,elasticsearch 返回聚合的方式并不是很方便。我在将弹性搜索结果转换为字典列表时遇到了麻烦,例如
弹性搜索假结果:
我希望结果是这样的:
就像具有行和列的普通数据库一样。聚合名称必须是必要的列名称。我曾想过使用一些数据的树表示,然后在使用 dfs 创建树数据结构后创建结果的每一行。但需要一个地方开始。
elasticsearch - 带有聚合的 Elasticsearch 日期范围查询
我正在尝试执行以下查询。我在文档 STATUS 中有 3 个属性 - 可以是“FAIL”、“PASS”、“INVALID” DATE - 包含日期和时间。
我想要每个状态的每日计数
例如:日期:11-09-2016,状态:失败,计数:120
日期:11-09-2016,状态:通过,计数:150
我想要最近一个月、两个月等的数据
此代码为我提供了每个状态的每日计数,但适用于所有记录。并想添加范围过滤器,如下所示。
但我无法合并这两个查询的内容。我已经尽力了。任何帮助是极大的赞赏。
elasticsearch - 在elasticsearch中如何编写聚合术语以便每5分钟按时间分组
elasticsearch中的一些数据是这样的:
'lts_at 是'时间戳,我想按'floor(lts_at/300)'中的数据分组
如何编写聚合查询?