当前位置: 首页 > 面试题库 >

重要条款导致CircuitBreakingException

秦光启
2023-03-14
问题内容

我有一个中型的Elasticsearch索引(1.46T或〜1e8文档)。它在4台服务器上运行,每台服务器在弹性和OS(用于缓存)之间平均分配64GB
Ram。

我想尝试新的“重要条款”聚合,因此我触发了以下查询…

{
  "query": {
    "ids": {
      "type": "document",
      "values": [
        "xCN4T1ABZRSj6lsB3p2IMTffv9-4ztzn1R11P_NwTTc"
      ]
    }
  },
  "aggregations": {
    "Keywords": {
      "significant_terms": {
        "field": "Body"
      }
    }
  },
  "size": 0
}

哪个应将指定的文档的主体与索引的其余部分进行比较,并找到对文档有意义的,索引中不常见的术语。

不幸的是,这总是导致

ElasticsearchException
[org.elasticsearch.common.breaker.CircuitBreakingException:数据太大,数据将超过[25741911654]个字节的限制];

嵌套:UncheckedExecutionException
[org.elasticsearch.common.breaker.CircuitBreakingException:数据太大,数据将大于[25741911654]个字节的限制];

嵌套:CircuitBreakingException [数据太大,数据将大于[25741911654]字节的限制];

一两分钟后,似乎暗示我没有足够的内存。

有问题的弹性服务器实际上是VM,因此我关闭了其他VM,并为每个弹性实例分配了96GB,为每个OS分配了96GB。

发生相同的问题(数字不同,花费的时间更长)。我没有可用的可用内存超过192GB的硬件,因此不能再提高了。

汇总不适合用于整个索引吗?我在查询格式方面犯了错误吗?


问题答案:

关于这种聚合的文档上有一个警告,内容涉及超大索引[1]的自由文本字段上的RAM使用。在大索引上,它对于词汇量较小的低基数字段(例如,标签)有效,但许多自由文本术语和许多文档的组合却很浪费内存。您可以查看在为Field
字段加载FieldData缓存[2]时指定一个过滤器,以修整低频项的长尾(例如doc频率<2),这将减少RAM开销。

在分析仅匹配的顶级文档样本中的重要术语之前,我使用了该算法的变体,并且此方法所需的RAM更少,因为仅从磁盘读取了前N个文档并标记了令牌(使用TermVectors或Analyzer)。但是,目前,Elasticsearch中的实现依赖于FieldData缓存并查找所有匹配文档的术语。

还有一件事-
当您说要“比较指定文档的正文”时,请注意,通常的操作方式是将一组文档与背景进行比较,而不仅仅是一个。所有分析均基于文档频率计数,因此,对于仅包含一个文档的样本集,所有术语的前景频率均为1,这意味着您缺乏加强任何分析的证据。



 类似资料:
  • 我有个问题: 我想创建一个chatwebapp,并使用Bootstrap进行布局。不幸的是,在下面的代码中,我得到了一个不应该存在的水平滚动条。我使用列和行,我知道在引导css中有一个填充,但当我试图移除它时,实际上什么也没有发生,滚动条仍停留在那里。也许你们能帮我。 null null

  • 我们是一家小型初创企业,大约两个月前开始。我们使用Stripe作为主要支付处理器,同时使用PayPal作为次要选项。 我们的计划是每月订阅,每月从$ 5到$ 25不等。我们的付款表单当前收集用户的姓名,CC,到期日期和CVC安全代码。 第一个月后,我们开始注意到用户的定期付款在 Stripe 上开始失败。我们不知道为什么会发生这种情况。如果第一笔付款成功,为什么未来的订阅付款会失败?到目前为止,我

  • 如果你已经阅读了条款1关于模板相关的类型推导,你就已经知道了机会所有关于auto的类型推导,因为除了一个例外,auto类型推导就是模板类型推导。但是它怎么就会是模板类型推导呢?模板类型推导涉及模板和函数以及参数,但是auto和上面的这些没有任何的关系。 这是对的,但是没有关系。模板类型推导和auto类型推导是有一个直接的映射。有一个书面上的从一种情况转换成另外一种情况的算法。 在条款1,模板类型推

  • 条款14:使用reserve来避免不必要的重新分配 关于STL容器,最神奇的事情之一是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,只要需要更多空间,就以realloc等价的思想来增长。这个类似于realloc的操作有四个部分: 分配新的内存块,它有容器目前容量的几倍。在大部分实现

  • Understand template type deduction. 当一个复杂系统的用户忽略这个系统是如何工作的,那就再好不过了,因为“如何”扯了一堆系统的设计细节。从这个方面来度量,C++的模板类型推导是个巨大的成功。成百上万的程序猿给模板函数传递完全类型匹配的参数,尽管有很多的程序猿会更加苛刻的给于这个函数推导的类型的严格描述。 如果上面的描述包括你,那我有好消息也有坏消息。好消息就是模板

  • 条款 当您访问 https://casbin.org 时,我们认为您同意如下条款及适用的法律法规,并且对相应的法律法规负责。 如果您不同意其中的任何一条,那您将没有权限访问或使用我们的网站。 此网站的所有资源均受到相应版权和商标法的保护。 使用许可证 当您从 Casbin 官网下载资料副本(信息或者软件)时,我们将授予您一份临时许可,仅供您个人的非商业阅览。 我们仅授权您使用,但并不将产权转让给您