Springboot2.1.1使用rest-high-level-client整合Elasticsearch6.4.3


一、前提:

經過各種踩坑后,現直接說明該文章中整合時需要注意的事項:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM