elasticsearch - 弹性搜索中数据太大的根本原因
问题描述
我正在努力寻找问题的确切原因:
"type": "circuit_breaking_exception",
"reason": "[fielddata] Data too large, data for [_id] would be [1704048152/1.5gb], which is larger than the limit of [1704040857/1.5gb]",
"bytes_wanted": 1704048152,
"bytes_limit": 1704040857,
"durability": "PERMANENT"
它发生在我的 aws 弹性搜索服务器上,我认为内存可能是一个问题,所以在我的本地笔记本电脑上我将 -xms tp 32 mb 和 -xmx 分配给 64 mb 并尝试在大约 1 00 000 条记录后在我的索引中插入数据我得到了错误:
circuit_breaking_exception
"reason": "[parent] Data too large
我无法获得与 AWS 弹性搜索完全相同的错误我重现了我插入超过 3500000 条记录的问题,但我仍然没有在本地获得该异常
我是弹性搜索的新手,我想知道我需要进行哪些更改才能避免在 AWS 弹性搜索上出现此问题
AWS弹性搜索的配置是:Elasticsearch version7.4 Instance type (data)c5.xlarge.elasticsearch EBS volume size60 GiB Max clause count: 1024 Field data cache allocation: unbounded (default)
让我如果需要更多详细信息
解决方案
在估计将字段加载到 JVM 堆中所需的内存量时,将考虑到提到的字段数据断路器。如果操作堆超出限制,它会通过引发异常来防止字段数据加载。默认情况下,它配置为最大 JVM 堆的 40%。它也可以配置(参见https://www.elastic.co/guide/en/elasticsearch/reference/current/circuit-breaker.html#fielddata-circuit-breaker)这里还有您应该注意的相关设置:https ://www.elastic.co/guide/en/elasticsearch/reference/current/modules-fielddata.html
看来,该节点已超载。增加 JVM 堆。如果不可行,请添加其他节点以将分片分布在更多实例上。