1.ES介绍
ES作为一个搜索工具,寄托于Lucene之上,提供了方便的数据存储和搜索服务,一般的用它来作为网页数据索引以及存储用户画像(即用户标签)数据,可以提供复具有复杂的查询条件的服务。例如在网页索引中,通过倒排的方式索引的方式,对文档进行分词存储,可以很快的定位关键字所在的文档,从而达到毫秒级的搜索效率;而在用户画像存储中,ES既可以作为标签宽表,提供类似HIVE宽表的特性,又可以达到传统关系型数据库或者HBase的实时查询的要求,所以在一般的用户画像存储中也是不二之选。文章来源地址https://www.toymoban.com/news/detail-574475.html
2.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.8.0</version>
</dependency>
3.配置客户端进行连接
package com.lantu.config;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RestClientConfig {
//配置RestHighLevelClient依赖到spring容器中待用
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
//绑定本机,端口,协议,如果是ES集群,就配置多个
new HttpHost("127.0.0.1",9200,"http")));
return client;
}
}
4.编写接口并实现分页查询
@ApiOperation("ES快搜")
@GetMapping("/wen")
public Result<Map<String,Object>> getProblemList(@RequestParam(value = "wenti") String wenti,
@RequestParam(value = "pageNo",required = false) Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize) throws IOException {
SearchRequest searchRequest = new SearchRequest("problem");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchPhraseQuery("wenti", wenti).analyzer("ik_max_word"));
//过滤查询
String[] excludes = {};
String[] includes = {"wenti","lab","id"};
searchSourceBuilder.fetchSource(includes, excludes);
searchSourceBuilder.from(pageNo);
searchSourceBuilder.size(pageSize);
searchRequest.source(searchSourceBuilder);
SearchResponse response = client.search(searchRequest,RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
List<Problem> problemList=new ArrayList<>();
Map<String,Object> data = new HashMap<>();
for (SearchHit hit : hits) {
problemList.add(JSON.parseObject(hit.getSourceAsString(),Problem.class));
System.out.println(hit.getSourceAsString());
}
data.put("total",hits.getTotalHits());
data.put("rows",problemList);
return Result.success(data);
}
文章来源:https://www.toymoban.com/news/detail-574475.html
到了这里,关于ES(Elasticsearch)+SpringBoot实现分页查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!