3.4.2.3.Search通过Kibana
创作人:李增胜
业务背景
在 To B 行业,对商品的搜索展示,是有一定业务要求的,例如:存在合作关系的买家和供应商才能看到供应商店铺的商品,不存在合作关系的买家则不展示商品。另外,有些商品对客户甲展示一种价格,对客户乙则展示另外一种价格,从而区分不同的会员、分组对商品价格的区别。
一句话总结:To B 行业的商品销售具有一定封闭性、特殊性。后续例子均在此背景下展开描述,以方便大家更加贴近业务场景来熟悉 Elasticsearch 对文档、索引、查询的一系列操作。
本文采用 IK 做分词器,下载的 IK 分词器版本必须和 Elasticsearch 版本一致
IK下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
1、在 Elasticsearch 的安装目录的 Plugins 目录下新建 IK 文件夹,然后将下载的 IK 安装包解压到此目录下。
2、重启 Elasticsearch 即可。
定义 Mapping
商品字段描述如下:
l goodsName: 商品名称
l skuCode:商品 sku 编码
l brandName:商品品牌名称
l channelType:渠道类型
l shopCode: 店铺编码
l publicPrice:售卖价格(基础价,对所有人开放价格)
l closeUserCode:封闭会员编码
l groupPrice:分组价格,其中使用嵌套类型存储,包括: 分组价格、 分组级别
定义商品 Mapping
PUT my_goods { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 1 } }, "mappings": { "properties": { "goodsName": { "type": "text", "analyzer": "ik_smart" }, "skuCode": { "type": "keyword" }, "brandName": { "type": "keyword" }, "channelType": { "type": "keyword" }, "shopCode": { "type": "keyword" }, "publicPrice": { "type": "float" }, "closeUserCode": { "type": "text", "analyzer": "standard" }, "boostValue": { "type": "keyword" }, "groupPrice": { "type": "nested", "properties": { "boxLevelPrice": { "type": "float" }, "level": { "type": "text" } } } } } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(2) https://developer.aliyun.com/article/1231070