这个自动补全的功能怎么说呢?比如百度搜索的时候只是输入了一个“老”,但是会有很多提示,什么老师,老人之类的。这就是自动补全!
GET /索引/_search
{"suggest": {"prefix_suggestion": {// 自定义推荐名,就是自己起的名字"prefix": "elastic",// 被补全的关键字,就相当于搜索框中输入的"completion": {"field": "productName",// 查询的域"skip_duplicates": true, // 忽略重复结果"size": 10 //最多查询到的结果数}}}
}
有一点要注意!注:自动补全对性能要求极高,ES不是通过倒排索引来实现的,所以需要将对应的查询字段类型设置为completion。
PUT /product2
{"mappings":{"properties":{"id":{"type":"integer","store":true,"index":true},"productName":{ "type":"completion"},"productDesc":{ "type":"text","store":true,"index":true}}}
}POST /product2/_doc
{"id":1,"productName":"elasticsearch1","productDesc":"elasticsearch1 is a good search engine"
}POST /product2/_doc
{"id":2,"productName":"elasticsearch2","productDesc":"elasticsearch2 is a good search engine"
}POST /product2/_doc
{"id":3,"productName":"elasticsearch3","productDesc":"elasticsearch3 is a good search engine"
}
GET /product2/_search
{"suggest": {"prefix_suggestion": {// 自定义推荐名"prefix": "el",// 被补全的关键字"completion": {"field": "productName",// 查询的域"skip_duplicates": true, // 忽略重复结果"size": 10 //最多查询到的结果数}}}
}