Search 重要术语导致断路异常
我有一个中等大小的elasticsearch索引(1.46T或~1e8文档)。它运行在4台服务器上,每台服务器都有64GB的Ram,在elastic和OS之间平均分配(用于缓存) 我想尝试新的“重要术语”聚合,因此我启动了以下查询Search 重要术语导致断路异常,search,
elasticsearch,circuit-breaker,Search,
elasticsearch,Circuit Breaker,我有一个中等大小的elasticsearch索引(1.46T或~1e8文档)。它运行在4台服务器上,每台服务器都有64GB的Ram,在elastic和OS之间平均分配(用于缓存) 我想尝试新的“重要术语”聚合,因此我启动了以下查询 { "query": { "ids": { "type": "document", "values": [ &quo
{
"query": {
"ids": {
"type": "document",
"values": [
"xCN4T1ABZRSj6lsB3p2IMTffv9-4ztzn1R11P_NwTTc"
]
}
},
"aggregations": {
"Keywords": {
"significant_terms": {
"field": "Body"
}
}
},
"size": 0
}
它应该将指定的文档正文与索引的其余部分进行比较,并找到索引中不常见的对文档有意义的术语
不幸的是,这总是导致
ElasticsearchException[org.elasticsearch.common.breaker.CircuitBreakingException:数据太大,数据将超过[25741911654]字节的限制]
嵌套:取消选中DexecutionException[org.elasticsearch.common.breaker.CircuitBreakingException:数据太大,数据将超过[25741911654]字节的限制]
嵌套:CircuitBreakingException[数据太大,数据将超过[25741911654]字节的限制]
一两分钟后,似乎暗示我没有足够的记忆力
讨论中的弹性服务器实际上是虚拟机,因此我关闭了其他虚拟机,并给每个弹性实例96GB,给每个操作系统96GB
出现了相同的问题(不同的数字,花费的时间更长)。我手头没有超过192GB的可用内存,所以不能再高了
聚合不是针对整个索引使用的吗?我在查询格式方面犯了错误吗?此聚合的文档中有一条警告,关于在自由文本字段上使用RAM来创建非常大的索引。在大索引上,它适用于具有较小词汇表(例如hashtags)的较低基数字段,但许多自由文本术语和许多文档的组合会占用内存。您可以考虑在加载FieldData缓存时为Body字段指定一个过滤器,以修剪低频术语的长尾(例如,doc frequency感谢提示re:filtering,您是对的,我错过了该警告)。