本文地址:http://blog.csdn.net/gumpeng/article/details/50346631
ES(elasticsearch)的suggester共有四类(term suggester, phrase suggester, completion suggester, context suggester), 其中completion suggester作为搜索框中的自动补齐功能,尤为常用。
本文将用java语言实现一个简单例子来叙述如何使用elasticsearch中的completion suggester功能。例子的主要功能是为股票的名称和编号建立自动补齐功能。
实现一个完整的completion suggester功能,需要三个步骤:建立schema,索引数据,搜索数据。下面分别进行介绍。
1.建立schema
schema对于ES来说,就如同一个database的表格定义,它用于预先定义各个字段的名称以及类型等。
需要被自动补齐的数据,得用一个类型为completion的字段来存储待补齐数据。具体如下:
{
"stock_suggest" : {
"mappings" : {
"stock" : {
"_id" : {
"path" : "id"
},
"properties" : {
"id" : {
"type" : "string",
"analyzer" : "keyword"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
},
"nameSuggest" : {
"type" : "completion",
"analyzer" : "standard",
"payloads" : true,
"preserve_separators" : false,
"preserve_position_increments" : false,
"max_input_length" : 50
}
}
}
}
}
}
需要说明的是payloads属