更新时间:2024-11-29 GMT+08:00
合理的mapping设置建议
合理地向Elasticsearch中进行数据索引时,也要注意以下几点:
- 不建议Elasticsearch对数据做动态mapping,您可以在创建index时便赋予index固定的mapping配置。当大量数据写入的同时伴随着新的字段的增加,会造成大量的put_mapping操作,从而造成EsMaster阻塞,影响整个Elasticsearch集群的运行。不建议使用动态mapping,如果需要使用动态mapping,建议尽量使用较为精准的匹配规则,杜绝*全匹配的通配符操作。当Elasticsearch的实例总数在500以上时,禁止使用动态mapping。
- 如果数据量巨大,可以分的字段个数太多,如超过1000个字段,建议给字段赋予不同的级别索引到不同的index中。例如,常用的查询字段可以写入到一个index中,字段长度较长且不常用的索引到另一个index中。
- 合理的设计mapping,根据实际的业务数据设置优化mapping,根据具体的字段和需求选择对应的类型设置,可参考如下几点:
- 字符串类型默认分成:text和keyword两种类型。需要分词:text,否则keyword。
- 枚举类型,基于性能keyword,即便是整型。
- 数值类型,尽量选择贴近大小的类型。
- 日期类型,如果需要基于时间轴做分析,必须date类型,如果仅需秒级返回,建议使用keyword。
- 其他类型,布尔、日期、地理位置,使用对应的类型即可。
- 如果某个字段不需要被检索,将“index”参数设置为“false”。
- 如果字段完全不需要检索,排序,聚合分析,将“enable”参数设置为“false”。
- norms字段,norms是索引评分因子,如果不用按评分对文档进行排序,设置为“false”,默认是“true”。
- _source字段,默认是开启的,如果不需要update、reindex和高亮操作,可以将“_source”设置为“false”,节省更多的磁盘空间。
父主题: 业务规划建议