gpt4 book ai didi

search - 重要条款导致 CircuitBreakingException

转载 作者:行者123 更新时间:2023-11-29 02:48:21 24 4
gpt4 key购买 nike

我有一个中等规模的 Elasticsearch 索引(1.46T 或 ~1e8 文档)。它在 4 台服务器上运行,每台服务器都有 64GB Ram,在 elastic 和操作系统(用于缓存)之间平均分配。

我想尝试新的“Significant terms”聚合,所以我触发了以下查询...

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

应该将指定文档的主体与索引的其余部分进行比较,并找到对文档重要但在索引中不常见的术语。

不幸的是,这总是导致

ElasticsearchException[org.elasticsearch.common.breaker.CircuitBreakingException: Data too large, data would be larger than limit of [25741911654] bytes];

nested: UncheckedExecutionException[org.elasticsearch.common.breaker.CircuitBreakingException: Data too large, data would be larger than limit of [25741911654] bytes];

nested: CircuitBreakingException[Data too large, data would be larger than limit of [25741911654] bytes];

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

有问题的弹性服务器实际上是虚拟机,所以我关闭了其他虚拟机并给每个弹性实例 96GB 和每个操作系统另外 96GB。

出现了同样的问题(不同的数字,花费了更长的时间)。我没有可用内存超过 192GB 的硬件,所以不能再高了。

聚合不是针对整个索引使用的吗?我是否在查询格式方面犯了错误?

最佳答案

此聚合的文档中有一条关于在非常大的索引的自由文本字段上使用 RAM 的警告 [1] .在大型索引上,它适用于具有较小词汇量(例如主题标签)的较低基数字段,但许多自由文本术语和许多文档的组合是一种内存消耗。您可以查看在加载 FieldData 缓存时指定过滤器 [2] Body 字段修剪低频术语的长尾(例如文档频率 <2),这将减少 RAM 开销。

我之前使用过此算法的变体,其中仅对最匹配文档的样本进行重要术语分析,​​并且这种方法需要更少的 RAM,因为仅从磁盘读取前 N 个文档并对其进行标记化(使用 TermVectors 或分析仪)。但是,目前 Elasticsearch 中的实现依赖于 FieldData 缓存并查找所有匹配文档的术语。

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

关于search - 重要条款导致 CircuitBreakingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23239625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com