返回給前端的實體類
@Data @AllArgsConstructor @NoArgsConstructor public class PageResult { private Long total; private List<RequestParamDoc> tkyb; }
/* * 前端的集合類 * */ @Data @NoArgsConstructor public class RequestParamDoc { private float score; private String gsbh; private String gsmc; private String zcd; private String gljg; private String gxxl; private String sss; private String ssj; private String gsjc; public RequestParamDoc(RequestParam requestParam) { this.score = requestParam.getScore(); this.gsbh = requestParam.getGsbh(); this.gsmc = requestParam.getGsmc(); this.zcd=requestParam.getZcd(); this.gljg = requestParam.getGljg(); this.gxxl = requestParam.getGxxl(); this.sss = requestParam.getSss(); this.ssj = requestParam.getSsj(); this.gsjc = requestParam.getGsjc(); } }
es對應(yīng)的實體類
/** *es對應(yīng)的實體類 */ @Data public class RequestParam { private String gsbh; private String gsmc; private String zcd; private String gljg; private String gxxl; private String sss; private String gsjc; private String ssj; private float score; }
前端傳遞的搜索參數(shù)實體類
@Data public class RequestParams { private String key; //可以里面包含的是分詞的所有字段 private Integer page; private Integer size; }
controller層
@RestController public class WayController { @Autowired private IWayService wayService; /** * 關(guān)鍵詞搜索 * @param params * @return */ @PostMapping("/way/list") public PageResult search(@RequestBody RequestParams params){ return wayService.search(params); } }
service層接口
public interface IWayService{ /** * 關(guān)鍵詞分頁查詢 * */ PageResult search(RequestParams params); }
service實現(xiàn)類文章來源:http://www.zghlxwxcb.cn/news/detail-402138.html
@Slf4j @Service public class WayService implements IWayService { @Autowired private RestHighLevelClient client; /** * 關(guān)鍵詞分頁查詢 * * @param params * @return */ @Override public PageResult search(RequestParams params) { //獲取關(guān)鍵詞 String key = params.getKey(); //創(chuàng)建索引庫的鏈接 SearchRequest searchRequest = new SearchRequest("hzgs_fgb_gsxx"); //創(chuàng)建查詢條件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //創(chuàng)建bool查詢 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //用公司名稱跟路線名稱 if (StringUtils.isBlank(key)) { boolQueryBuilder.must(QueryBuilders.matchAllQuery()); } else { boolQueryBuilder.must(QueryBuilders.multiMatchQuery("gsmc", key, "gxxl", key)); } // 設(shè)置搜索條件 searchSourceBuilder.query(boolQueryBuilder); //進行分頁設(shè)置 searchSourceBuilder.from(params.getPage()); searchSourceBuilder.size(params.getSize()); searchRequest.source(searchSourceBuilder); // 增加高亮查詢 HighlightBuilder highlightBuilder = new HighlightBuilder(); // 設(shè)置高亮條件 highlightBuilder.preTags("<span>"); highlightBuilder.field("gsmc"); highlightBuilder.postTags("</span>"); searchSourceBuilder.highlighter(highlightBuilder); List<RequestParamDoc> list = new ArrayList<>(); long total = 0L; try { //在索引庫中進行查詢 SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); SearchHits hits = response.getHits(); //獲取總條數(shù) total = response.getHits().getTotalHits().value; for (SearchHit hit : hits) { String jsonStr = hit.getSourceAsString(); //json轉(zhuǎn)化為對象 RequestParamDoc requestParamDoc = JSON.parseObject(jsonStr, RequestParamDoc.class); list.add(requestParamDoc); } } catch (IOException e) { log.error("Es搜索異常!"); e.printStackTrace(); } return new PageResult(total, list); } }
Springboot啟動類文章來源地址http://www.zghlxwxcb.cn/news/detail-402138.html
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class WayApplication { public static void main(String[] args) { SpringApplication.run(WayApplication.class, args); } @Bean public RestHighLevelClient client(){ final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); //進行es的授權(quán) credentialsProvider.setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("es111","123344555")); //es的鏈接庫 return new RestHighLevelClient(RestClient.builder(HttpHost.create("http://127.0.0.1:9200")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) { httpAsyncClientBuilder.disableAuthCaching(); return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } })); } }
到了這里,關(guān)于Elasticsearch的關(guān)鍵詞搜索的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!