搜索补全功能使用的是es的completion suggester实现 官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.htmlhtml
先设置mapping:app
POST /index/completion/_mapping { "properties":{ "title": { "type": "text", "analyzer": "ik_sync_smart" }, "title_suggest": { "type": "completion", "analyzer": "ik_sync_smart", "search_analyzer": "ik_sync_smart" } } }
重点是title_suggest,这个字段就是以后咱们搜索补全的字段,须要设置type为completion,analyzer按状况设置分析器elasticsearch
索引数据:ide
POST /index/completion/_bulk { "index" : { } } { "title": "背景天安门广场大学", "title_suggest": "背景天安门广场大学"} { "index" : { } } { "title": "北京天安门","title_suggest": "北京天安门"} { "index" : { } } { "title": "北京鸟巢","title_suggest": "北京鸟巢"} { "index" : { } } { "title": "奥林匹克公园","title_suggest": "奥林匹克公园"} { "index" : { } } { "title": "奥林匹克森林公园","title_suggest": "奥林匹克森林公园"} { "index" : { } } { "title": "北京奥林匹克公园","title_suggest": "北京奥林匹克公园"} { "index" : { } } { "title": "北京奥林匹克公园","title_suggest": {"input": "我爱中国","weight": 100}}
索引的时候能够对suggest字段,增长weight增长排序权重ui
搜索补全:code
POST /index/completion/_search { "size": 0, "suggest": { "blog-suggest": { "prefix": "北京", "completion": { "field": "title_suggest" } } } } 返回: { "took": 27, "timed_out": false, "_shards": { "total": 3, "successful": 3, "skipped": 0, "failed": 0 }, "hits": { "total": 0, "max_score": 0, "hits": [] }, "suggest": { "blog-suggest": [ { "text": "北京", "offset": 0, "length": 2, "options": [ { "text": "北京天安门", "_index": "jzbsearch", "_type": "completion", "_id": "AWK9FJDeGCbNhyb_l9I6", "_score": 1, "_source": { "title": "北京天安门", "title_suggest": "北京天安门" } }, { "text": "北京奥林匹克公园", "_index": "jzbsearch", "_type": "completion", "_id": "AWK9FJDeGCbNhyb_l9I-", "_score": 1, "_source": { "title": "北京奥林匹克公园", "title_suggest": "北京奥林匹克公园" } }, { "text": "北京鸟巢", "_index": "jzbsearch", "_type": "completion", "_id": "AWK9FJDeGCbNhyb_l9I7", "_score": 1, "_source": { "title": "北京鸟巢", "title_suggest": "北京鸟巢" } } ] } ] } }
参考连接: https://elasticsearch.cn/article/142 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.htmlhtm