表现层
@GetMapping("/suggestion") public List<String> getSuggestion(@RequestParam("key") String xiaoxi){ return searchService.getsuggestion(xiaoxi); }
业务层
@Service
public class searchServiceImpl implements searchService {
@Autowired
private RestHighLevelClient restHighLevelClient;
@Override
public List<String> getsuggestion(String xiaoxi) {
//准备Request “item”是你创建的es名
SearchRequest request = new SearchRequest("item");
String a = xiaoxi;
//准备DSL
request.source().fetchSource(new String[0],null );//这行可以不写
request.source().suggest(new SuggestBuilder().addSuggestion("item_suggest",
SuggestBuilders.completionSuggestion("suggestion").
prefix(a)
.skipDuplicates(true)
.size(10)));
//发送请求
SearchResponse search = null;
try {
search = restHighLevelClient.search(request, RequestOptions.DEFAULT);
} catch (IOException e) {
e.printStackTrace();
}
//解析结果
Suggest suggest = search.getSuggest();
//获取 suggestion
CompletionSuggestion suggestion = suggest.getSuggestion("item_suggest");
//获取option
List<CompletionSuggestion.Entry.Option> options = suggestion.getOptions();
//循环遍历获取text
List<String> result = new ArrayList<>(options.size());
for (CompletionSuggestion.Entry.Option option : options) {
String s = option.getText().toString();
result.add(s);
}
return result;
}