首页 > 解决方案 > 弹性搜索中数据太大的根本原因

问题描述

我正在努力寻找问题的确切原因:

"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)

让我如果需要更多详细信息

标签: elasticsearchaws-elasticsearch

解决方案


在估计将字段加载到 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 堆。如果不可行,请添加其他节点以将分片分布在更多实例上。


推荐阅读