问题标签 [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 回答
378 浏览

elasticsearch - 具有日期比较和计算的弹性搜索聚合

嗨,我对弹性搜索有点陌生。我需要使用日期比较和动态范围过滤器进行聚合。

就像我需要在 created_at 文档比他们的 Identification_date 早 1 周时获取文档计数。

所以我尝试了这样的事情,但我的日期参数似乎未使用,实际上改变它永远不会改变我的结果。

感谢您花时间提供帮助。

0 投票
1 回答
37 浏览

elasticsearch - 使用 ElasticSearch 聚合获取完整文档

我有一个像这样的索引:

而且我想得到不同的结果Department,我不在乎顺序,每个结果只有 1 个Department。我尝试使用聚合,但我只能设法通过关联Deppartmentsdoc_count获得不同。他们查询我尝试过的内容类似于:

它返回:

当我想要类似的东西时:

0 投票
1 回答
1491 浏览

elasticsearch - Elasticsearch 搜索的多样化结果

我使用流行度完成了一个复杂的查询,以改进使用 Elasticsearch 的社交媒体文档的结果。查询工作得非常好,最重要的结果总是以查询为中心并带有有趣的元素。

但是它有一个问题,对于某些查询,第一个结果都来自同一个用户

如果在更高的文档上检索到相同的用户,我想对文档进行降分。通过这种方式,我希望结果更加多样化。

请注意,我不希望它们被删除,因为在某些情况下,查找同一用户的更多文档可能仍然很有趣,但我希望它们处于较低位置。

任何人都可以提出一种使其工作的方法吗?


正如一些评论中所建议的,我更新了我的查询的(简化版本):


PS:一些文件可能很有趣,因为他们谈论多样性,但我不确定如何申请:

0 投票
1 回答
365 浏览

elasticsearch - Elasticsearch 1.7 文档类型聚合

我正在尝试汇总我们日期存储中的文档类型。查看1.7 类型过滤器文档,使用类型过滤器很简单。但是,我在尝试提交该查询时遇到了以下问题:

结果是:

我成功运行以下命令:

结果是:

知道如何在基于 的单个聚合中将它们全部取回_type吗?

0 投票
0 回答
1297 浏览

elasticsearch - Elasticsearch 聚合多方面导航,按组排除方面

我对 ES 还很陌生,并且一直在尝试以与大多数大型电子商务商店相同的方式实现分面导航。

我的部分产品映射如下所示:

如您所见,我将分面作为嵌套对象存储在“过滤器”中。

在我的搜索查询中,我可以将此聚合添加到我的查询中:

这给了我一个很好的方面列表来坚持我的导航。我可以通过 2 种方式将选定的方面应用于我的文档结果:使用“后过滤器”或“过滤查询”

后过滤器在查询后应用聚合,因此无论用户选择了哪些方面,都会给我文档计数。相比之下,过滤后的查询会根据选定的分面计算分面计数,但它会隐藏没有匹配文档的分面。

我需要做的 - 以及大多数大型电子商务商店所做的 - 是两者的混合体。我希望方面计数基于所选内容,但忽略同一组中的任何方面。

如果我有这些方面:

颜色:

  • 红色 (1)
  • 蓝色 (2)
  • 绿色 (3)

品牌:

  • 奥迪 (1)
  • 福特 (2)
  • 宝马 (3)

如果有人选择蓝色,红色和绿色的计数应该保持不变,但会影响品牌的计数。

我在 Stack Overflow 上发现了一个类似的问题: ElasticSearch 聚合:每个聚合排除一个过滤器

据我所知,我需要提供一个预定义的方面列表(来自我的关系数据库)并将它们添加到我的聚合中。所以我有一个我的方面组的手动列表,然后我为每个组添加一个过滤器桶 ( https://www.elastic.co/guide/en/elasticsearch/guide/current/_filter_bucket.html )。在过滤器中,我需要添加一个布尔查询,其中包含我为每个方面组包含的所有用户选择的方面,而忽略属于该组的任何方面。

所以现在我有一个庞大的聚合列表,按它们的方面组分组/存储,每个都有一个过滤器,其中包含一个可能有十几个选定字段的布尔查询。现在的查询太大了,如果我把它贴在这里,可能一页都放不下!

考虑到我之前必须做的几乎是我需要的,这对我来说似乎是对我的查询的一个疯狂补充。这是我能做到这一点的唯一方法吗?

非常感谢任何帮助,我希望我的问题足够清楚。

0 投票
0 回答
275 浏览

elasticsearch - match_query 里面的脚本?[弹性搜索]

我有一个相当复杂的聚合,它的复杂性是由于缺少 has_parent 聚合造成的。既然如此,它是使用 groovy 实现的。我唯一的问题是过滤聚合中计算的文档。

聚合看起来像这样:https ://gist.github.com/serj-p/c4fcc9810b3b627de294 这个聚合的目的是建立顶级大学联系人毕业。联系人文档具有子文档,即 Facebook 个人资料。最后一个有代表大学的嵌套字段,这就是我访问 _source 字段的原因。

正如您可能看到的,我在开始时执行过滤:

排除没有相关文档的联系人。“organizations.name”被分析为

正在以相同的方式分析用于过滤此字段的 appleid 文本。我发现很难在脚本内对字段值和过滤文本进行相同的处理,以过滤特定的嵌套文档。这就是为什么我正在寻找一些从脚本访问 ES API 的可能性。

提前感谢您的任何建议

0 投票
2 回答
1435 浏览

elasticsearch - 对特定字段进行分组时的 ClassCastException[null]

我正在尝试使用以下查询对特定字段的结果进行分组:

Elasticsearch 服务器抛出此异常:

这也是间歇性的 - 有时它会返回结果,而有时它不会。服务器日志中没有更多的描述性信息。

有人知道这个问题吗?

编辑:按Val的要求添加了错误日志

0 投票
1 回答
3262 浏览

elasticsearch - 如何在弹性搜索的嵌套聚合中存储空字段和非空字段?

我在弹性搜索中有以下一组嵌套子聚合(field2 是 field1 的子聚合,field3 是 field2 的子聚合)。然而事实证明,field3 的术语聚合不会存储没有 field3 的文档。

我的理解是,除了 field3 的术语查询之外,我还必须使用 Missing 子聚合查询来存储这些查询。

但我不确定如何将它添加到下面的查询中以存储两者。

0 投票
1 回答
1005 浏览

elasticsearch - 如何在弹性搜索中按基数计算元素?

假设我有一个存储人的物理属性的映射,以及该映射中的一个字段,即用户 ID。例如:

我正在尝试进行查询,该查询将返回有多少人具有给定的眼睛颜色。例如,它会返回类似“green”的内容:962。

我认为我需要做的是 eye_color 字段的术语桶,然后是考虑 user_id 的基数子聚合,但到目前为止我还没有成功。这就是我所拥有的:

这当然失败了。任何帮助表示赞赏。

0 投票
0 回答
186 浏览

elasticsearch - 弹性搜索中的“反向基数”?

假设我有一个存储人们旅行的映射,以及该映射中的一个字段,即用户 ID。例如:

我正在尝试进行一个查询,该查询将返回按人数(user_id)存储的旅行量(具有此映射的条目)。

例如,它将返回如下内容:

我不知道如何面对这种询问。一段时间以来,我一直在搞乱术语桶和子聚合,但无济于事。

任何帮助表示赞赏。

更新

这是一个例子:

假设我的索引中有以下记录:

我的查询将返回如下内容:

因为有一个用户有两次旅行(id 11019)和两个用户有一次旅行(ids 11020 和 11021)。