【问题标题】:ElasticSearch: high cardinality aggregation circuit breakerElasticSearch:高基数聚合断路器
【发布时间】:2020-08-08 15:06:21
【问题描述】:

我有一个应用程序,允许用户在高基数字段上执行聚合。不幸的是,这种聚合可能非常缓慢。对于一个基数为 400 万的特定字段,需要 7 秒。

这样的聚合不会产生有用的结果。我想快速终止它们,只为那个特定的聚合返回一条错误消息,上面写着“太多的值”。

这可能吗?

ElasticSearch 确实支持一些断路器:https://www.elastic.co/guide/en/elasticsearch/reference/current/circuit-breaker.html,但我没有看到适用于包含多个聚合的更大查询中的单个聚合的断路器。另外,这些适用于内存使用情况,而不是执行速度。

【问题讨论】:

  • 需要返回错误吗?不能只限制大小吗?
  • @AlkisKalogeris 大小已经有限。执行仍然需要 7 秒。我想提前终止执行以加快查询速度。
  • 您可以在您的应用程序上设置此聚合的超时时间。您使用的是哪个客户端?

标签: elasticsearch elasticsearch-aggregation


【解决方案1】:

您不会提前知道聚合将花费多少秒 - 有太多变量在起作用。

您可以评估尖峰开始的位置——无论是 1M、4M 等,然后在发送请求之前显示警告,或者在 x 单位时间之后还没有响应时显示警告。 . 有various 客户ways 这样做的。

在 ES 中处理请求后,我不知道有什么方法可以阻止它,直到它解决或超时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 2015-09-17
    • 2014-02-02
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多