定製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()