问题标签 [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.

0 投票
1 回答
4816 浏览

elasticsearch - 如何在不返回 Elasticsearch 中的所有存储桶的情况下执行管道聚合

我正在使用 Elasticsearch 2.3,并且正在尝试使用管道聚合执行两步计算。我只对管道聚合的最终结果感兴趣,但 Elasticsearch 会返回所有存储桶信息。

由于我有大量的桶(数千万或数亿),这是令人望而却步的。不幸的是,我找不到方法告诉 Es 不要返回所有这些信息。

这是一个玩具示例。我有test-index一个文档类型的索引objobj有两个字段,key并且values.

我想获得具有相同skey的最小值的平均值(在所有 svalue上)。最小值的平均值。objkey

Elasticsearch 允许我这样做:

但是这个查询返回每个桶的最小值,虽然我不需要它:

有没有办法摆脱里面的所有信息"buckets": [...]?我只对avg_min_value.

在这个玩具示例中这似乎不是问题,但是当不同keys 的数量不大(数千万或数亿)时,查询响应大得令人望而却步,我想对其进行修剪。

有没有办法用 Elasticsearch 做到这一点?还是我对数据的建模错误?

注意:预先聚合每个键的数据是不可接受的,因为match_all我的查询部分可能会被复杂和未知的过滤器替换。

NB2:size在我的聚合中更改为非负数terms是不可接受的,因为它会改变结果。

0 投票
1 回答
2429 浏览

elasticsearch - 如何按指标结果对聚合存储桶进行排序?

根据官方文档,似乎只能对单桶聚合进行排序。如何按桶聚合数量中的“平均”对结果进行排序?

我在 'result_1' 中添加了 'order' 仍然无法正常工作。它在下面显示错误:

关键是我必须限制'float_field'的范围,范围聚合是另一个桶聚合。

有人有什么主意吗?

谢谢!

代码示例:

0 投票
1 回答
2580 浏览

elasticsearch - 通过 Elasticsearch 中的查询聚合文档计数(如 solr 中的 facet.query)

我有一个主查询,我需要几个子查询的匹配数。用solr的话来说,我需要一个facet.query。我缺少的是一个简单的doc_count聚合,比如value_count 聚合

有什么建议么?

我发现了两种我不喜欢的可能解决方案:

  1. 使用带有value_count指标的过滤器聚合_id

例子:

  1. 使用多搜索 API

例子:

我看到解决方案 2 更快,但可以想象match_main为复杂的查询!因此,如果有一个doc_count:{}而不是value_count:{"field":"_id"}.

但回到我的基本问题:elasticsearch 中的 solr 对应物是什么facet.query

0 投票
0 回答
248 浏览

elasticsearch - Logstash如何做ES移动平均预测?

我正在使用 Elasticsearch 2.3.2 和 Logstash 2.3.3。我从https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-movavg-aggregation.html找到了移动平均线可以做预测。我知道只能在 ES 中进行查询,但我不确定我应该如何使用 logstash 进行查询。我有一个 logstash 文件,它每 15 秒读取一个存储 CPU 使用率的 csv 日志文件。我应该将以下内容包含到相关索引的logstash输出json文件中作为输出映射吗?

这是我的logstash json 文件

是否可以将其作为图表显示在 Kibana 中?

0 投票
1 回答
425 浏览

elasticsearch - 术语聚合(实现分层分面)查询性能慢

我在弹性搜索中索引指标名称。度量名称的格式为foo.bar.baz.aux。这是我使用的索引。

上述索引为度量名称创建了以下术语foo.bar.baz

如果我有一堆指标,如下所示

我必须编写一个查询来获取第 n 级令牌。在上面的例子中

除了写术语聚合之外,我想不出任何其他方式。要找出 的 2 级标记a.b,这是我提出的查询。

这将导致以下存储桶。我解析输出并从那里抓取 [c, m] 。

到目前为止,一切都很好。该查询适用于大多数租户(tenantId term上面的通知查询)。对于某些拥有大量数据(大约 1 百万)的租户,性能确实很慢。我猜所有的术语聚合都需要时间。

我想知道术语聚合是否是此类数据的正确选择,并且还在寻找其他可能的查询类型。

0 投票
2 回答
2099 浏览

elasticsearch - ElasticSearch如何显示所有匹配日期范围聚合的文档

遵循弹性文档: https ://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

问题:

如何进行日期范围聚合并显示与相关日期桶匹配的所有文档,而不是doc_count.

聚合:

回复:

也许我需要做一些子聚合或其他事情?

有任何想法吗?

0 投票
1 回答
768 浏览

elasticsearch - Elasticsearch:聚合两个字段

不知道如何提出问题。我正在使用 Elasticsearch 2.2。

让我们从一个由 5 个文档组成的数据集示例开始:

called_entity总是有一个uuidcoverage_entity可以是空的,或者有一个uuid

我想要的是在called_entity.uuidcoverage_entity.uuid上进行聚合,然后计算文档的总量和successful_transfers 的总和。因此,对于这 5 个文档,我会得到类似的结果:

问题是这意味着可以在多个聚合中使用同一个文档,只要聚合键在 called_entity.uuid 或 coverage_entity.uuuid 中(我什至不确定这是否可能,这就是我发布的原因这里)。

我目前正在做的只是在called_entity.uuid字段上进行聚合,但这当然还不够:

这给了我类似的东西:

...这不是我想要的。那么,我如何聚合多个值,或者对于给定的聚合,如何根据所有文档中存在的值(不仅仅是聚合中的一个)计算数据?

谢谢你。

0 投票
0 回答
892 浏览

elasticsearch - Elasticsearch 中的模糊桶聚合

Elasticsearch 支持模糊搜索查询:https ://www.elastic.co/guide/en/elasticsearch/guide/2.x/fuzzy-match-query.html

以及按期限聚合的桶:https ://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html

它说“......桶是动态构建的 - 每个唯一值一个。”

是否可以通过模糊术语将这两个特征和桶结合起来?这样例如“America”和“Amrica”将属于同一个桶?(使用“术语”存储桶,它们属于 2 个单独的存储桶,使用“模糊”搜索,返回两条记录。

我正在尝试按“关键字”分组,包括拼写错误-也许有不同的方法可以解决?(蛮力是对每个“关键字”运行“模糊”搜索并手动添加数字......)

0 投票
1 回答
844 浏览

elasticsearch - 对字段进行聚合并在弹性搜索中返回总和

我正在努力寻找在过滤另一个字段后对字段进行聚合的方法。但是,Elastic 搜索文档并不容易理解。

可以说我的映射:

所需的聚合:

这不是我的要求,但答案有助于我理解文档。

0 投票
0 回答
509 浏览

ruby-on-rails - Searchkick 中的嵌套聚合

我用 id 和 name 为我的模型颜色编制索引,当使用 Searchkick 聚合时,我需要在一个哈希中同时包含 id 和 name 的结果,而不是分开。

如何做到这一点?

这就是它现在的工作方式:

询问

结果

如您所见,id 和 name 在单独的哈希中,因此关系被破坏。

这样做的目的是生成各种过滤器,其中我需要后端 ID 和前端名称。如果使用 searchkick 无法做到这一点,是否还有其他“解决方法”如何实现这一目标?

谢谢你,米罗