首页 > 解决方案 > AWS Elasticsearch 超出了索引中总字段的限制

问题描述

我正在运行ElasticsearchAWS并且还不太了解如何正确解决此问题。

现在,我将项目存储DynamoDb并用于dynamodb streams将项目发送到 lambda,然后在创建/更新时使用dynamodb-stream-elasticsearch将它们发送到 elasticsearch。

一些属性可以是具有许多嵌套属性的对象,这些属性本身可以是对象,当添加这些新字段时,就是我第一次开始收到此错误的时候。由于这些项目的性质,这些新属性将来需要可搜索。

最初,默认索引值没有更改。在我第一次搜索如何解决此问题后,我将限制增加到 5000,现在不得不将其增加到 12000。实例类型是 t2.small.elasticsearch。在我增加索引限制后,aws elasticsearch 控制台已经将实例运行状况报告为黄色。

解决这种情况的最佳方法是什么?

增加实例类型是否可以修复它,还是分解项目并拥有多个单独的索引?如果解决方案是后者,是否有关于如何使用此设置(aws dynamodb/elasticsearch)执行此操作的良好教程/指南?

标签: amazon-web-serviceselasticsearchamazon-dynamodbindex-error

解决方案


默认情况下,索引中的最大字段数是1000,但是您可以通过更改index.mapping.total_fields.limit索引设置来增加它。

查看其他设置以防止映射爆炸: https ://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping.html#mapping-limit-settings

解决这种情况的最佳方法是什么?

如果您使用扁平化,这可能是一个解决方案

嵌套类型是对象数据类型的特殊版本,它允许对象数组以可以相互独立查询的方式进行索引。

当摄取具有大量任意键的键值对时,您可能会考虑将每个键值对建模为具有键和值字段的自己的嵌套文档。相反,请考虑使用 扁平数据类型,它将整个对象映射为单个字段,并允许对其内容进行简单搜索。嵌套文档和查询通常很昂贵,因此在此用例中使用扁平数据类型是更好的选择。


推荐阅读