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

Elasticsearch 概念与基础实操 (索引、映射与文档操作)(黑马微服务课day12)

Elasticsearch 概念与基础实操 (索引、映射与文档操作)

在海量数据的搜索与分析场景中,Elasticsearch (简称 ES) 凭借其分布式、高扩展和近实时的搜索特性,成为了众多开发者的首选。因此了解es的使用的原理和操作必不可少

Rabbit高级篇的总结内容:RabbitMQ高级篇总结
Rabbit入门篇的总结内容:Rabbit入门篇总结

📚 目录(点击跳转对应章节)

1. 核心概念:正向索引与倒排索引
2. 中文分词利器:IK 分词器
3. ES 与 MySQL 概念对比
4. Mapping 映射属性
5. 索引库操作 (Index CRUD)
6. 文档操作 (Document CRUD)


1. 核心概念:正向索引与倒排索引

理解 ES 的高效查询,首先要理解它的索引机制。

  • 正向索引:类似传统关系型数据库的主键查询,通过 ID 找内容。如果是模糊查询(如LIKE),需要全表扫描,效率极低。
  • 倒排索引:ES 搜索的核心。它将文档内容进行分词,提取出词条(Term),并记录该词条所在的文档 ID 列表。搜索时,先对关键词分词,再去词条列表中快速定位文档 ID,最后根据 ID 获取文档。这种方式极大地提高了全文检索的速度。

小结


2. 中文分词利器:IK 分词器

倒排索引依赖于分词,而 ES 默认的标准分词器对中文支持很不友好(会将中文逐字切分)。在实际项目中,我们通常会接入 IK 分词器。

IK 分词器提供两种常用的分词模式:

  • ik_smart:最少切分,追求粗粒度的精准。

  • ik_max_word:最细切分,穷尽词库的可能,适合搜索场景。

    拓展分词词库中的词条:


3. ES 与 MySQL 概念对比

为了方便具备关系型数据库背景的开发者理解,我们可以将 ES 的概念与 MySQL 进行类比:

  • MySQL:数据库 (Database) -> 表 (Table) -> 行 (Row) -> 列 (Column)
  • Elasticsearch:索引库 (Index) -> 类型 (Type,ES 7.x 之后已废弃,默认_doc) -> 文档 (Document) -> 字段 (Field)

此外,ES 的 Mapping 映射就相当于 MySQL 中的表结构定义(Schema)。


4. Mapping 映射属性

Mapping 是对索引库中整篇文档及其包含字段的结构定义。常见的数据类型包括:

  • 字符串text(可分词的文本)、keyword(精确值,如品牌、邮箱,不分词)
  • 数值long,integer,short,byte,double,float
  • 布尔boolean
  • 日期date
  • 对象object(JSON 嵌套)

核心注意:只有text类型的字段需要进行分词,并可以配置analyzer属性。

具体实例:


5. 索引库操作 (Index CRUD)

RESTful API 风格贯穿了整个 ES 操作。对于索引库的操作,核心原则是:一旦创建,无法修改已有的 Mapping 字段(因为这会导致原有倒排索引失效),但可以新增字段。

5.1 创建索引库和映射

使用PUT请求,明确表达“创建或覆盖”的语义。

PUT/heima{"mappings":{"properties":{"info":{"type":"text","analyzer":"ik_smart"},"email":{"type":"keyword","index":false},"name":{"properties":{"firstName":{"type":"keyword"}}}}}}

5.2 查询索引库

使用GET请求。

GET /heima

5.3 修改索引库 (仅限新增字段)

使用PUT向已有的 mapping 中追加新字段。

PUT/heima/_mapping{"properties":{"age":{"type":"integer"}}}

倒排索引结构虽然不复杂,但是一旦数据结构改变(比如改变了分词器),就需要重新创建倒排索引,这简直是灾难。因此索引库一旦创建,无法修改mapping

虽然无法修改mapping中已有的字段,但是却允许添加新的字段到mapping中,因为不会对倒排索引产生影响。因此修改索引库能做的就是向索引库中添加新字段,或者更新索引库的基础属性。

5.4 删除索引库

使用DELETE请求。

DELETE /heima

6. 文档操作 (Document CRUD)

对具体数据的增删改查同样遵循 RESTful 原则。

6.1 新增文档

使用POST请求,并指定索引库、_doc以及文档 ID。

POST/heima/_doc/1{"info":"黑马程序员Java讲师","email":"zy@itcast.cn","name":{"firstName":"云","lastName":"赵"}}

6.2 查询文档

使用GET请求加文档 ID。

GET/heima/_doc/1

6.3 删除文档

使用DELETE请求加文档 ID。

DELETE/heima/_doc/1

6.4 修改文档

ES 的修改分为全量修改和局部修改:

全量修改 (PUT):底层逻辑是先根据 ID 删除旧文档,再新增同 ID 文档。如果原 ID 不存在,则直接变为新增操作。

PUT/heima/_doc/1{"info":"黑马程序员高级Java讲师","email":"zy@itcast.cn","name":{"firstName":"云","lastName":"赵"}}

局部修改 (POST + _update):仅修改指定的字段值。

POST/heima/_update/1{"doc":{"email":"ZhaoYun@itcast.cn"}}

6.5 批处理 (Bulk)

在处理大量数据时,使用_bulk接口可以极大提高网络吞吐量。批处理的内容格式比较特殊,每一组操作由两行 JSON 组成(操作类型与元数据 + 操作的实际数据)。

批量新增示例

POST/_bulk{"index":{"_index":"heima","_id":"3"}}{"info":"黑马程序员C++讲师","email":"ww@itcast.cn","name":{"firstName":"五","lastName":"王"}}{"index":{"_index":"heima","_id":"4"}}{"info":"黑马程序员前端讲师","email":"zhangsan@itcast.cn","name":{"firstName":"三","lastName":"张"}}

批量删除示例

POST/_bulk{"delete":{"_index":"heima","_id":"3"}}{"delete":{"_index":"heima","_id":"4"}}
http://www.jsqmd.com/news/382959/

相关文章:

  • HDFS 容错机制:面对节点故障的应对策略
  • [Non] 房屋分配
  • 2026年 亚克力厚板/透明亚克力/亚克力泳池/亚克力工厂推荐榜:匠心制造与大型工程定制解决方案深度解析 - 品牌企业推荐师(官方)
  • Python深度学习:从入门到实战完整教程:从入门到实战部署
  • 2026年 南通百度开户/360开户/百度广告代理推荐榜:专业竞价开户与平台运营服务口碑之选 - 品牌企业推荐师(官方)
  • 2025.2.8总结
  • 电脑开机慢如蜗牛?先别急着换电脑,换个固态硬盘瞬间起飞!
  • 小程序路由、导航、tabBar
  • 2025.2.9总结
  • AI动作迁移神器通义万象开源版:静态图秒变热舞视频,附高清修复教程
  • 2026年 粉碎机厂家实力推荐榜:30B高效/WF-30B中草药/万能/粗/超微粉碎机,精选耐用高效机型助力生产 - 品牌企业推荐师(官方)
  • OpenEuler 20.03构建zabbix rpm包
  • 2025.2.7总结
  • 2026年 风冷模块机/水冷模块机厂家推荐排行榜,二手风冷模块机,成都二手水冷模块,实力品牌与高性价比方案深度解析 - 品牌企业推荐师(官方)
  • 2026年南通网络推广代运营推荐榜:百度/爱采购/360/GEO/百家号全平台专业服务深度解析 - 品牌企业推荐师(官方)
  • 2026年晶体振荡器厂家推荐排行榜:贴片/有源/无源/石英/差分/恒温/压控/温补/车规/工业级全系列精准时频解决方案深度解析 - 品牌企业推荐师(官方)
  • 报错:动态链接库(DLL)初始化例程失败 - f
  • 2026年 连续挤压机厂家推荐排行榜,铝扁线/铜材/高速连续挤压机,铝管/铜排挤压生产线专业品牌深度解析 - 品牌企业推荐师(官方)
  • AI原生应用开发指南:知识抽取模块的设计与优化
  • 什么是VPC(虚拟私有云,Virtual Private Cloud)网络?
  • 向量模型的训练 - f
  • 2026年 企业管理咨询公司推荐榜单:江苏上海精益生产/6S现场/薪酬绩效/股权激励管理顾问服务深度解析 - 品牌企业推荐师(官方)
  • 《P3800 Power 收集》
  • AI原生应用开发:文本生成的7个最佳实践
  • 2026年 展柜厂家推荐排行榜:内衣/酒柜/鞋柜/珠宝/化妆品/博物馆/服装/书店/食品/奢侈品展柜,匠心设计与高端定制实力解析 - 品牌企业推荐师(官方)
  • 数据产品创新:自然语言处理在大数据中的应用
  • Kotlin 面向对象 - 匿名内部类、匿名内部类简化
  • 没人陪的情人节的一些杂谈
  • 开发3
  • Supervisor 配置laravel队列常驻