返回给前端的实体类
@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对应的实体类
/** *es对应的实体类 */ @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; }
前端传递的搜索参数实体类
@Data public class RequestParams { private String key; //可以里面包含的是分词的所有字段 private Integer page; private Integer size; }
controller层
@RestController public class WayController { @Autowired private IWayService wayService; /** * 关键词搜索 * @param params * @return */ @PostMapping("/way/list") public PageResult search(@RequestBody RequestParams params){ return wayService.search(params); } }
service层接口
public interface IWayService{ /** * 关键词分页查询 * */ PageResult search(RequestParams params); }
service实现类文章来源:https://www.toymoban.com/news/detail-402138.html
@Slf4j @Service public class WayService implements IWayService { @Autowired private RestHighLevelClient client; /** * 关键词分页查询 * * @param params * @return */ @Override public PageResult search(RequestParams params) { //获取关键词 String key = params.getKey(); //创建索引库的链接 SearchRequest searchRequest = new SearchRequest("hzgs_fgb_gsxx"); //创建查询条件 SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //创建bool查询 BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); //用公司名称跟路线名称 if (StringUtils.isBlank(key)) { boolQueryBuilder.must(QueryBuilders.matchAllQuery()); } else { boolQueryBuilder.must(QueryBuilders.multiMatchQuery("gsmc", key, "gxxl", key)); } // 设置搜索条件 searchSourceBuilder.query(boolQueryBuilder); //进行分页设置 searchSourceBuilder.from(params.getPage()); searchSourceBuilder.size(params.getSize()); searchRequest.source(searchSourceBuilder); // 增加高亮查询 HighlightBuilder highlightBuilder = new HighlightBuilder(); // 设置高亮条件 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(); //获取总条数 total = response.getHits().getTotalHits().value; for (SearchHit hit : hits) { String jsonStr = hit.getSourceAsString(); //json转化为对象 RequestParamDoc requestParamDoc = JSON.parseObject(jsonStr, RequestParamDoc.class); list.add(requestParamDoc); } } catch (IOException e) { log.error("Es搜索异常!"); e.printStackTrace(); } return new PageResult(total, list); } }
Springboot启动类文章来源地址https://www.toymoban.com/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的授权 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); } })); } }
到了这里,关于Elasticsearch的关键词搜索的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!