SpringCloud(九.2)ES 进阶 -- RestAPI实现自动补全查询
语法
备注:因是只是案例讲解对应关系, “hotelSuggestion” "title_suggest" 和上图的 “mySuggestion” 是一个东西 ,都是suggest的名称,正常开发时应该保持为一个名称。
酒店demo 单元测试案例:
@Test void testSuggest() throws IOException { // 1.准备请求 SearchRequest request = new SearchRequest("hotel"); // 2.请求参数 request.source().suggest(new SuggestBuilder() .addSuggestion( "hotelSuggest", SuggestBuilders .completionSuggestion("suggestion") .size(10) .skipDuplicates(true) .prefix("s") )); // 3.发出请求 SearchResponse response = client.search(request, RequestOptions.DEFAULT); // 4.解析 Suggest suggest = response.getSuggest(); // 4.1.根据名称获取结果 CompletionSuggestion suggestion = suggest.getSuggestion("hotelSuggest"); // 4.2.获取options for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) { // 4.3.获取补全的结果 String str = option.getText().toString(); System.out.println(str); } }
结果展示:
酒店demo实战案例
Controller 编写接口 key为搜索的关键字
@GetMapping("suggestion") public List<String> getSuggestion(@RequestParam("key") String key) { return hotelService.getSuggestion(key); }
alt+enter 补齐IService,Service实现getSuggestion方法
Service
@Override public List<String> getSuggestion(String key) { try { // 1.准备请求 SearchRequest request = new SearchRequest("hotel"); // 2.请求参数 request.source().suggest(new SuggestBuilder() .addSuggestion( "hotelSuggest", SuggestBuilders .completionSuggestion("suggestion") .size(10) .skipDuplicates(true) .prefix(key) )); // 3.发出请求 SearchResponse response = restHighLevelClient.search(request, RequestOptions.DEFAULT); // 4.解析 Suggest suggest = response.getSuggest(); // 4.1.根据名称获取结果 CompletionSuggestion suggestion = suggest.getSuggestion("hotelSuggest"); // 4.2.获取options List<String> list = new ArrayList<>(); for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) { // 4.3.获取补全的结果 String str = option.getText().toString(); // 4.4.放入集合 list.add(str); } return list; } catch (IOException e) { throw new RuntimeException(e); } }
分类:
JAVA自学笔记
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 欧阳的2024年终总结,迷茫,重生与失业
· 在 .NET 中使用 Tesseract 识别图片文字
· Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?
· 史上最全的Cursor IDE教程
· 关于产品设计的思考