1.ES介紹
??ES作為一個(gè)搜索工具,寄托于Lucene之上,提供了方便的數(shù)據(jù)存儲(chǔ)和搜索服務(wù),一般的用它來(lái)作為網(wǎng)頁(yè)數(shù)據(jù)索引以及存儲(chǔ)用戶畫(huà)像(即用戶標(biāo)簽)數(shù)據(jù),可以提供復(fù)具有復(fù)雜的查詢(xún)條件的服務(wù)。例如在網(wǎng)頁(yè)索引中,通過(guò)倒排的方式索引的方式,對(duì)文檔進(jìn)行分詞存儲(chǔ),可以很快的定位關(guān)鍵字所在的文檔,從而達(dá)到毫秒級(jí)的搜索效率;而在用戶畫(huà)像存儲(chǔ)中,ES既可以作為標(biāo)簽寬表,提供類(lèi)似HIVE寬表的特性,又可以達(dá)到傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)或者HBase的實(shí)時(shí)查詢(xún)的要求,所以在一般的用戶畫(huà)像存儲(chǔ)中也是不二之選。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-574475.html
2.引入依賴(lài)
<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.配置客戶端進(jìn)行連接
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依賴(lài)到spring容器中待用
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
//綁定本機(jī),端口,協(xié)議,如果是ES集群,就配置多個(gè)
new HttpHost("127.0.0.1",9200,"http")));
return client;
}
}
4.編寫(xiě)接口并實(shí)現(xiàn)分頁(yè)查詢(xún)
@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"));
//過(guò)濾查詢(xún)
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);
}
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-574475.html
到了這里,關(guān)于ES(Elasticsearch)+SpringBoot實(shí)現(xiàn)分頁(yè)查詢(xún)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!