@Override
public String spellingCorrection(SpellingCorrectionRequest request) throws IOException {
// 1、构建 PhraseSuggestion 条件
PhraseSuggestionBuilder phraseSuggestionBuilder = new PhraseSuggestionBuilder(request.getFieldName());
phraseSuggestionBuilder.text(request.getText());
phraseSuggestionBuilder.size(1);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.sort(new ScoreSortBuilder().order(SortOrder.DESC));
searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(MY_SUGGEST, phraseSuggestionBuilder));
// 2、封装搜索请求
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(request.getIndexName());
searchRequest.source(searchSourceBuilder);
// 3、查询elasticsearch
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
// 4、获取响应中纠错后的词
PhraseSuggestion phraseSuggestion = searchResponse.getSuggest().getSuggestion(MY_SUGGEST);
List<PhraseSuggestion.Entry.Option> options = phraseSuggestion.getEntries().get(0).getOptions();
return Optional.ofNullable(options).filter(e -> !e.isEmpty()).map(e -> e.get(0)).map(e -> e.getText().string()).orElse("");
}