定製SpringBoot Starter 之Elasticsearch Rest High Level Client Starter

定製SpringBoot Starter 之Elasticsearch Rest High Level Client Starter

1. 自定義SpringBoot Starter 三要素:

1.1.pom :

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>

        <!-- 將被@ConfigurationProperties註解的類的屬性注入到元數據 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

1.2. 註解使用

@Data
@ConfigurationProperties(prefix = ElasticsearchProperties.ELASTIC_SEARCH_PREFIX)
public class ElasticsearchProperties{}

@Configuration
@EnableConfigurationProperties(ElasticsearchProperties.class)
public class ElasticsearchAutoConfiguration{}

1.3 EnableAutoConfiguration 利用SpringFactoriesLoader機制加載所有的AutoConfiguration類 META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xiao.custom.elasticsearch.start.autoconfig.ElasticsearchAutoConfiguration

Elasticsearch高級客戶端打包集成爲Springboot Starter包,詳情參考Example工程


2. Custom ElasticSearch High Level Rest Client Starter使用說明:

2.1Pom引入

     
       <properties>
               <elasticsearch.version>6.3.2</elasticsearch.version>
       </properties>

       <dependencies>
        <dependency>
            <groupId>com.purcotton.omni</groupId>
            <artifactId>omni-common-elasticsearch-starter</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>${elasticsearch.version}</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>${elasticsearch.version}</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>${elasticsearch.version}</version>
        </dependency>
       </dependencies>

2.2配置文件:

spring:
  elasticsearch:
    rest:
      clusterName: omni-dev-es
      hosts:
        -
          hostname: 192.168.206.210
          port: 9200
          schema: http
        #-
          #hostname: 192.168.206.212
          #port: 9200
          #schema: http
      #username: you username
      #password: you passwd
      # 連接超時時間,單位ms,默認1S
      connectTimeout: 1000
      # socket超時時間,單位ms,默認30S
      socketTimeout: 30000
      # 請求超時時間,單位ms,默認500ms
      requestTimeout: 500
      # 單機最大連接數,默認30個
      maxConnect: 30
      # 單機最大併發數,默認10個
      maxConnectRoute: 10
      # 最大重試時間,默認30S
      maxRetryTimeout: 30000

2.3代碼引用:

    @Autowired
    private RestHighLevelClient restHighLevelClient;

2.4ElasticSearch High Level Rest Client 增刪改Demo:

ElasticsearchApplicationTest

   // 創建索引
   ElasticsearchApplicationTest.testCreateIndex()
   // 索引是否存在
   ElasticsearchApplicationTest.testIndexExist()
   // 刪除索引
   ElasticsearchApplicationTest.testDelIndex()
   // 打開和關閉索引
   ElasticsearchApplicationTest.testOpenAndCloseIndex()
   // 添加文檔
   ElasticsearchApplicationTest.testInsert()
   // 主鍵ID獲取文檔
   ElasticsearchApplicationTest.testGetIndex()
   // 更新文檔
   ElasticsearchApplicationTest.testUpdate()
   // 搜索
   ElasticsearchApplicationTest.testQuery()
   // 刪除文檔
   ElasticsearchApplicationTest.testDel()
   // 批處理1
   ElasticsearchApplicationTest.testBulkRequest()
   // 批處理2
   ElasticsearchApplicationTest.testBulkProcessor()

GitHub地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章