Elasticsearch Mapping设计与电商应用实战指南(新手指南)

Elasticsearch Mapping设计与电商应用实战指南(新手指南)

本文将以电商场景的订单/商品搜索为例,带你系统掌握ES核心概念。即使零基础也能通过本文理解复杂mapping配置背后的设计思想。(全文约2500字,建议收藏精读)


一、ES文件结构全景解析

1.1 索引层级结构
 

bash

代码解读

复制代码

PUT product # 创建名为product的索引(相当于数据库) { "mappings": { # 定义索引结构(相当于表结构) "properties": { # 字段定义区(相当于列定义) "spuName": { # 字段名 "type": "text", # 字段类型 "analyzer": "ik_max_word" # 分词器配置 } } } }

1.2 核心配置区域
  • type:决定数据存储方式(如text/keyword/long)
  • index:控制是否创建索引(默认true)
  • doc_values:控制列式存储(默认true)
  • fields:实现多字段类型(如同时支持text和keyword)

二、电商场景关键技术拆解

2.1 嵌套对象实战(Nested Type)

问题场景:订单中的商品列表需要独立查询

 

json

代码解读

复制代码

"orderItems": { "type": "nested", // 关键配置 "properties": { "spuName": {"type": "text"} } }

对比实验

  • 普通object类型:"spuName:手机"会错误匹配到多个商品
  • nested类型:精确匹配单个子文档

查询示例

 

json

代码解读

复制代码

{ "query": { "nested": { "path": "orderItems", "query": { "term": {"orderItems.spuName": "旗舰手机"} } } } }

2.2 中文分词深度配置

IK分词器对比

 

text

代码解读

复制代码

原始文本:"进口有机纯牛奶" ik_max_word ➔ 进口/有机/纯牛奶/牛奶(最大粒度切分) ik_smart ➔ 进口/有机/纯牛奶(智能切分)

典型配置

 

json

代码解读

复制代码

"shopName": { "type": "text", "analyzer": "ik_max_word", // 索引时细粒度分词 "search_analyzer": "ik_smart" // 搜索时粗粒度匹配 }

效果验证

 

bash

代码解读

复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值