一、前提:
經過各種踩坑后,現直接說明該文章中整合時需要注意的事項:
A.創建Springboot工程時,選擇Springboot版本為2.1.1,默認會使用新版本,而新版本對應自帶的elasticsearch包可能已經是7.x已上
B.如果創建Springboot工程時,發下沒有2.1.1版本,也可以后續創建完工程,再次修改pom.xml,得到需要的版本。
C.當然,可以通過此篇文章舉一反三,使用Springboot高級版本,只要elasticsearch版本對應上即可
D.版本選擇可以根據自身服務器上的的ES版本決定,不要跨大版本
D.引入rest-high-level-client依賴:
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>6.4.3</version> </dependency>
二、配置文件"application.properties":
spring.elasticsearch.rest.uris=http://xxx.xxx.xxx.xxx:9200
此處比較簡單,配置好自己服務器的IP和端口即可
三、基於業務層的簡單實用(樣例):
在業務層添加如下代碼,可直接使用測試,更復雜查詢則不過多介紹
@Service public class ElasticSearchService { private Logger logger = LoggerFactory.getLogger(ElasticSearchService.class); // 在配置文件中已經配置,此處直接可以使用 @Resource private RestHighLevelClient client; public boolean isExist(String reference) throws IOException { // 1、查詢條件 MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("DREREFERENCE", reference); // 2、封裝boolBuilder等一系列內容 BoolQueryBuilder boolBuilder = QueryBuilders.boolQuery(); boolBuilder.must(matchQueryBuilder); // 封裝sourceBuilder SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 設置查詢,可以是任何類型的QueryBuilder sourceBuilder.query(boolBuilder); // 設置確定結果要從哪個索引開始搜索的from選項,默認為0 sourceBuilder.from(0); // 設置確定搜素命中返回數的size選項,默認為10 sourceBuilder.size(1); // 設置一個可選的超時,控制允許搜索的時間 sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); // 第一個是獲取字段,第二個是過濾的字段,默認獲取全部 sourceBuilder.fetchSource(new String[] {"DREREFERENCE","DRETITLE"}, new String[] {}); // 索引 SearchRequest searchRequest = new SearchRequest("full-sight-v1"); // 3、封裝searchRequest searchRequest.source(sourceBuilder); // 4、查詢 SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT); // SearchHits提供有關所有匹配的全局信息,例如總命中數或最高分數 SearchHits hits = response.getHits(); SearchHit[] searchHits = hits.getHits(); for (SearchHit hit : searchHits) { logger.info("search -> {}",hit.getSourceAsString()); } return searchHits.length > 0; } }
rest-high-level-client