本文基于Elasticsearch7.x
前置知识:
什么是数据建模(Data Modeling)?
数据建模是创建数据模型的过程, 数据模型是对真实世界进行抽象描述的一种工具和方法, 实现对现实世界的映射.
在实际开发中, 我们的数据都是存储在MySQL中, Elasticsearch数据建模就是根据业务场景建立一个与MySQL表结构对应的Index Mapping结构, 然后将MySQL中的数据迁移到Elasticsearch中.
Mappings 设置非常重要, 需要从两个维度进行考虑:
- 功能:搜索, 聚合, 排序
- 性能:存储的开销, 内存的开销, 搜索的性能
如何对字段进行建模?
对字段进行建模时, 我们需要仔细考虑以下四点.
- 字段类型
- 是否要搜索及分词
- 是否要聚合及排序
- 是否要额外的存储
字段类型
(1) text和keyword
- text类型用于全文本字段, 文本会被分词. 默认不支持聚合和排序, 只有将fielddata设为true才能支持聚合和排序, 但不推荐使用.
- keyword类型用于id, 枚举, 或不需要被分词的文本. 适用于filter搜索, 排序和聚合.