Elasticsearch(简称es)是一款功能强大的开源分布式实时搜索引擎,在日志分析、企业级搜索、时序分析等领域有广泛应用,几乎是各大公司搜索分析引擎的开源首选方案。本文不讲废话,不谈理论,目的在于实现功能。
现在的很多搜索引擎都具备了自动补全纠错的功能,我们熟悉的淘宝、京东、百度、谷歌等。本文主要介绍es在电商项目中的应用与实践,简单的介绍es的安装搭建方式,分词器的使用,主要介绍搜索过程自动补全(中文、全拼、简拼),多字段联合搜索,自动纠错的实现,本文采用es6.6.2,
我们输入“华为手机”,“huaweishouji”,“hwsj”,“huawei手机”,“华为shouji”,“hua为shou机”,都可以出现自动完成提示如下



安装elasticsearch的步骤以及分词器插件就省略了,如有问题请联系作者获取打包好的安装软件,加微信RR-sasa,备注csdn-es
一、配置
PUT /item
{
"settings":{
"index": {
"number_of_shards": 1,
"number_of_replicas" : 0,
"analysis": {
"analyzer": {
"default": {
"tokenizer": "ik_max_word"
},
"pinyin_analyzer": {
"tokenizer": "shopmall_pinyin"
},
"first_py_letter_analyzer": {
"tokenizer": "first_py_letter"
},
"full_pinyin_letter_analyzer": {
"tokenizer": "full_pinyin_letter"
}
},
"tokenizer": {
"shopmall_pinyin": {
"keep_joined_full_pinyin": "true",
"keep_first_letter": "true",
"keep_separate_first_letter": "false",
"lowercase": "true",
"type": "pinyin",
"limit_first_letter_length": "16",
"keep_original": "true",
"keep_full_pinyin": "true",
"keep_none_chinese_in_joined_full_pinyin": "true"
},
"first_py_letter": {
"type": "pinyin",
"keep_first_letter": true,
"keep_full_pinyin": false,
"keep_original": false,
"limit_first_letter_length": 16,
"lowercase": true,
"trim_whitespace": true,
"keep_none_chinese_in_first_letter": false,
"none_chinese_pinyin_tokenize": false,
"keep_none_chinese": true,
"keep_none_chinese_in_joined_full_pinyin": true
},
"full_pinyin_letter": {
"type": "pinyin",
"keep_separate_first_letter": false,
"keep_full_pinyin": false,
"keep_original": false,
"limit_first_letter_length": 16,
"lowercase": true,
"keep_first_letter": false,
"keep_none_chinese_in_first_letter": false,
"none_chinese_pinyin_tokenize": false,
"keep_none_chinese": true,
"keep_joined_full_pinyin": true,
"keep_none_chinese_in_joined_full_pinyin": true
}
}
}
}
}
,
"mappings":{
"itemdocs": {
"properties": {
"title": {
"type": "completion",
"fields": {
"pinyin": {
"type": "completion",
"analyzer": "pinyin_analyzer"
},
"keyword_pinyin": {
"type": "completion",
"analyzer": "full_pinyin_letter_analyzer"
},
"keyword_first_py": {
"type": "completion",
"analyzer": "first_py_letter_analyzer"
}
}
}
}
}
}
}
二、插入数据
PUT /item/itemdocs/1
{
"groupId":1335,
"title":"华为手机p40星空灰"
}
PUT /item/itemdocs/2
{
"groupId":1335,
"title":"华为手机mate40樱粉金"
}
PUT /item/itemdocs/3
{
"groupId":1335,
"title":"华为手机nova8全面屏"
}
PUT /item/itemdocs/4
{
"groupId":1335,
"title":"华为手机nova7高清拍照"
}
三、查询
GET /item/itemdocs/_search
{
"from": 0,
"size": 10,
"suggest": {
"my-suggest-1": {
"text": "hua",
"completion": {
"field": "title.keyword_pinyin",
"size": 100
}
}
}
}

本文介绍了如何利用Elasticsearch实现类似淘宝、京东、百度等搜索引擎的自动补全功能。通过实例展示了安装、配置、插入数据以及查询的过程,强调了中文、全拼、简拼的自动完成,并提供了简单的查询示例。
255

被折叠的 条评论
为什么被折叠?



