- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个中等规模的 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/
我有一个中等规模的 Elasticsearch 索引(1.46T 或 ~1e8 文档)。它在 4 台服务器上运行,每台服务器都有 64GB Ram,在 elastic 和操作系统(用于缓存)之间平均分
我想知道这个错误的可变情况。 > CircuitBreakingException[[parent] Data too large, data for > [] would be [326331999
我收到警告说 elasticsearch 有 2 个未分配的分片。我进行了以下 api 调用以收集更多详细信息。 curl -s http://localhost:9200/_cluster/
我是一名优秀的程序员,十分优秀!