在掌握了 Elasticsearch 的基本概念和操作后,本篇将重点介绍如何设计和管理索引,以及如何高效地导入和维护数据。这对于构建一个高效、可扩展的搜索系统至关重要。
1. 索引设计
1.1 如何选择合适的索引结构
索引是 Elasticsearch 的核心,设计时需考虑以下因素:
- 数据用途:是用于搜索、分析还是两者兼顾?
- 数据量:预计文档数量和增长速度。
- 查询模式:常见的查询类型(如精确匹配、全文搜索、聚合)。
例如,日志系统可能需要按时间划分索引(如 logs-2025.04
),而电商系统可能按商品类别设计索引。
1.2 动态映射(Dynamic Mapping)与显式映射(Explicit Mapping)
- 动态映射:Elasticsearch 自动推断字段类型。
自动生成映射:POST /my_index/_doc {"name": "Grok","age": 30 }
{"mappings": {"properties": {"name": { "type": "text" },"age": { "type": "integer" }}} }
- 显式映射:手动定义字段类型,避免类型推断错误。
PUT /my_index {"mappings": {"properties": {"name": { "type": "keyword" },"age": { "type": "integer" }}} }
text
:适合全文搜索,支持分词。keyword
:适合精确匹配、排序和聚合。
1.3 字段类型详解
常用类型包括:
text
:分词后存储,用于搜索。keyword
:不分词,用于精确匹配。date
:时间类型,支持范围查询。integer
/float
:数值类型,支持计算。
Mermaid 图示 - 字段类型选择流程