amazon-web-services - AWS Elasticsearch 超出了索引中总字段的限制
问题描述
我正在运行Elasticsearch
,AWS
并且还不太了解如何正确解决此问题。
现在,我将项目存储DynamoDb
并用于dynamodb streams
将项目发送到 lambda,然后在创建/更新时使用dynamodb-stream-elasticsearch将它们发送到 elasticsearch。
一些属性可以是具有许多嵌套属性的对象,这些属性本身可以是对象,当添加这些新字段时,就是我第一次开始收到此错误的时候。由于这些项目的性质,这些新属性将来需要可搜索。
最初,默认索引值没有更改。在我第一次搜索如何解决此问题后,我将限制增加到 5000,现在不得不将其增加到 12000。实例类型是 t2.small.elasticsearch。在我增加索引限制后,aws elasticsearch 控制台已经将实例运行状况报告为黄色。
解决这种情况的最佳方法是什么?
增加实例类型是否可以修复它,还是分解项目并拥有多个单独的索引?如果解决方案是后者,是否有关于如何使用此设置(aws dynamodb/elasticsearch)执行此操作的良好教程/指南?
解决方案
默认情况下,索引中的最大字段数是1000,但是您可以通过更改index.mapping.total_fields.limit
索引设置来增加它。
查看其他设置以防止映射爆炸: https ://www.elastic.co/guide/en/elasticsearch/reference/5.5/mapping.html#mapping-limit-settings
解决这种情况的最佳方法是什么?
如果您使用扁平化,这可能是一个解决方案
嵌套类型是对象数据类型的特殊版本,它允许对象数组以可以相互独立查询的方式进行索引。
当摄取具有大量任意键的键值对时,您可能会考虑将每个键值对建模为具有键和值字段的自己的嵌套文档。相反,请考虑使用 扁平数据类型,它将整个对象映射为单个字段,并允许对其内容进行简单搜索。嵌套文档和查询通常很昂贵,因此在此用例中使用扁平数据类型是更好的选择。
推荐阅读
- javascript - 为什么 Sequelize/Tedious 不能连接到 localhost 数据库?
- r - 寓言包中的不规则时间序列
- reactjs - 如何将多个 Create React App (CRA) 构建添加到 SharePoint 页面?
- delphi-2010 - 使用 Indy 10 发送字节
- java - JPA 异常:找到了多行具有给定标识符的行
- types - 有没有办法检测卡的类型,即借记卡或信用卡
- c# - 图表仅在辅助图表中保存 1 行 - Acumatica C#
- c - 尽管 DLGC_WANTTAB 多行 EDIT 对话框控件不使用制表符
- python - Scikit-learn SequentialFeatureSelector 输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。即使有管道
- tensorflow - 自定义 keras 真正的正数指标是否应该始终返回一个整数?