- 创建索引
put housesuggest
2.创建映射
POST housesuggest/doc/_mapping
{
"properties": {
"houseid":{
"type": "text"
},
"district":{
"type": "completion"
, "analyzer": "ik_max_word",
"search_analyzer": "ik_max_word"
}
}
}
3.插入几条数据后(这里自行添加)
4.java代码
public List<String> getSuggestSearch(String keyword) {
//field的名字,前缀(输入的text),以及大小size
CompletionSuggestionBuilder suggestionBuilderDistrict = SuggestBuilders.completionSuggestion("district")
.prefix(keyword).size(3);
SuggestBuilder suggestBuilder = new SuggestBuilder();
suggestBuilder.addSuggestion("suggestDistrict", suggestionBuilderDistrict);//添加suggest
//设置查询builder的index,type,以及建议
SearchRequestBuilder requestBuilder = client.prepareSearch(HouseConstant.INDEX).setTypes(HouseConstant.TYPE).suggest(suggestBuilder);
logger.info(requestBuilder.toString());
SearchResponse response = requestBuilder.get();
Suggest suggest = response.getSuggest();//suggest实体
Set<String> suggestSet = new HashSet<>();//set
int maxSuggest = 0;
if (suggest!=null){
Suggest.Suggestion result = suggest.getSuggestion("suggestDistrict");//获取suggest,name任意string
for (Object term : result.getEntries()) {
if (term instanceof CompletionSuggestion.Entry){
CompletionSuggestion.Entry item = (CompletionSuggestion.Entry) term;
if (!item.getOptions().isEmpty()){
//若item的option不为空,循环遍历
for (CompletionSuggestion.Entry.Option option : item.getOptions()) {
String tip = option.getText().toString();
if (!suggestSet.contains(tip)){
suggestSet.add(tip);
++maxSuggest;
}
}
}
}
if (maxSuggest>=5){
break;
}
}
}
List<String> suggests = Arrays.asList(suggestSet.toArray(new String[]{}));
return suggests;
}