当前位置: 首页 > news >正文

Elasticsearch映射:优化搜索性能的关键

是的,在 Elasticsearch 中可以并且强烈建议显式定义映射(Mapping)。映射定义了索引中的文档如何存储和索引,包括字段的数据类型(如 text, keyword, date, integer 等)及其相关属性(如分词器、是否索引、格式等)。


🔑 为什么需要定义映射?

  1. 控制数据类型:防止 Elasticsearch 自动推断错误(如将数字识别为字符串)。
  2. 优化性能:合理设置字段类型(如 keyword 适合精确匹配,text 适合全文搜索)。
  3. 节省存储:禁用不需要索引的字段。
  4. 高级控制:自定义分词器、多字段(fields)等。

✏️ 如何定义映射?

1️⃣ 创建索引时定义映射
PUT /my_index
{"mappings": {"properties": { "title":    { "type": "text" },  "category": { "type": "keyword" },"price":    { "type": "float" },"created_at": { "type":   "date","format": "yyyy-MM-dd HH:mm:ss"},"tags":     { "type": "keyword" },"description": { "type": "text","index": false  // 不参与搜索,仅存储}}}
}
2️⃣ 向已有索引添加新字段映射
PUT /my_index/_mapping
{"properties": {"new_field": { "type": "integer" }}
}

注意:已存在的字段映射无法修改(除非使用 Reindex API 重建索引)。


🔧 常用映射参数

参数说明示例
type字段类型(text, keyword, long, boolean, nested 等)"type": "date"
index是否索引(true/false"index": false
format自定义日期格式"format": "yyyy-MM-dd"
fields为字段定义多子字段见下方👇
analyzer指定分词器(如 standard, ik_smart"analyzer": "ik_max_word"
ignore_above忽略超过长度的 keyword 字段"ignore_above": 256

🌟 多字段(Multi-fields)示例

一个字段同时支持全文搜索和精确聚合:

{"product_name": {"type": "text",          // 全文搜索"fields": {"raw": {               // 子字段名"type":  "keyword"   // 精确匹配/聚合}}}
}
  • 使用全文搜索:product_name: "手机"
  • 使用精确聚合:product_name.raw: "iPhone 15 Pro"

动态映射 vs 显式映射

动态映射(Dynamic)显式映射(Explicit)
ES 自动推断字段类型手动预定义字段类型
灵活但有风险(类型错误)安全可控,性能更优
适合快速原型生产环境必备

可通过 dynamic 参数控制动态规则:

"mappings": {"dynamic": "strict", // 禁止自动新增字段"properties": {...}
}

💡 最佳实践

  1. 提前规划映射:索引创建前设计好字段类型。
  2. 慎用动态映射:生产环境建议设为 strictruntime
  3. 善用 keyword:精确查询/聚合的字段勿用 text
  4. 定期检查映射:使用 GET /my_index/_mapping 验证。

📌 提示:遇到无法修改映射的情况?用 Reindex API 将数据迁移到新索引!

http://www.dtcms.com/a/351969.html

相关文章:

  • 【无标题】计数组合学7.21(有界部分大小的平面分拆)
  • JVM模型
  • 微信小程序web-view嵌套H5,小程序与H5通信
  • 不安全的服务器,不支持 FTP over TLS
  • 服务器从0到1微服务所需的环境的安装
  • 数据结构(一):算法的时间复杂度和空间复杂度
  • 双坡阳光房光伏设计,精准实现降本增效
  • 【Python】QT(PySide2、PyQt5):列表数据保存到文件,文件数据加载到列表
  • QT(QTableWidget)
  • Matlab使用——开发上位机APP,通过串口显示来自单片机的电压电流曲线,实现光伏I-V特性监测的设计
  • 盲盒一番赏小程序:打造个性化潮玩购物天堂
  • vs2022 Nuget包缓存下载路径配置
  • 国产机安装caj 国产机没法打开caj文件,国产机如何看论文?
  • AIGC(生成式AI)试用 35 -- AI Agent开发及工作流,LangFlow
  • github拉取OpenSSL SSL_read: Connection was reset, errno 10054
  • Element中table组件(el-table)右侧滚动条空白占位gutter处理
  • window电脑使用OpenSSL创建Ed25519密钥
  • 由倍讯科技研制的CCLinkIE转ModbusTCP网关,可达成与脉冲计数器的连接
  • Tesseract OCR之单词识别与字符分类器
  • Docker:部署Redis
  • 常见flex布局思路:flex布局上下结构
  • 2025中国生物制造科技创新论坛为何“花落”常德?
  • 新源布料厂进销存管理系统-项目分享
  • week5-[字符数组]查找
  • 木马免杀工具使用
  • 智汇云舟:视频孪生技术引领行业变革的场景应用实践
  • 第二十三天-FSMC简介
  • 技术速递|Model Context Protocol (MCP) 支持已上线 JetBrains、Eclipse 和 Xcode
  • 计算机网络:天气预报
  • SpringBoot + Redisson 实现分布式锁实战(附业务案例)