本篇文章主要介紹了使用 Docker Compse 部署 Elasticsearch + Kibana,并整合到 Spring Boot 項目中的詳細步驟。
Elasticsearch + Kibana 版本: 7.17.0(7 的最新版本);Spring Boot 版本:2.7.5 。
Kibana 官方文檔、Elasticsearch官方文檔
服務(wù)器目錄結(jié)構(gòu)
—— root
|—— mall // 根目錄
|—— pack
|—— elastic
|-- config
|-- elasticsearch.yml // Elasticsearch 配置文件
|-- data // Elasticsearch 數(shù)據(jù)目錄
|-- plugins // Elasticsearch 插件目錄
|-- docker-compose.yaml // 啟動容器
|-- kibana
|-- kibana.yml kibana 配置文件
部署 Elasticsearch 和 Kibana
啟動容器
- 在 config 目錄下,編寫 elasticsearch.yml 配置文件,內(nèi)容如下。
network.host: 0.0.0.0
discovery.type: single-node
- 在 kibana 目錄下,編寫 kibana.yml 配置文件,內(nèi)容如下。
server.host: 0.0.0.0
server.name: kibana
- 在 elastic 目錄下,編寫 docker-compose.yaml 配置文件,內(nèi)容如下。
version: '3.3'
services:
elasticsearch:
restart: always
image: elasticsearch:7.17.0 # 使用的鏡像名稱
container_name: elasticsearch # 容器名稱
ports: # 指定暴露的端口
- 9200:9200
- 9300:9300
environment:
- ES_JAVA_OPTS= -Xms2g -Xmx2g # 指定 JVM 內(nèi)存大小
volumes: # 指定掛載目錄
- ~/mall/pack/elastic/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ~/mall/pack/elastic/data:/usr/share/elasticsearch/data
- ~/mall/pack/elastic/plugins:/usr/share/elasticsearch/plugins
networks: # 網(wǎng)絡(luò)配置
- elasticsearch-network
kibana:
restart: always
image: kibana:7.17.0
container_name: kibana
ports:
- 5601:5601
depends_on: # 服務(wù)依賴
- elasticsearch
volumes:
- ~/mall/pack/elastic/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- kibana-network
networks:
elasticsearch-network:
kibana-network:
- 執(zhí)行如下命令,啟動容器。
docker-compose up -d // 啟動容器
docker-compose logs -f // 查看容器啟動日志
- 分別訪問 localhost:9200 和 localhost:5601 網(wǎng)址。顯示如下信息和界面,說明 Elasticsearch 服務(wù)和 Kibana 服務(wù)部署成功。
{
"name" : "cf55d2d2cfd9",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "ZqDLEOikRW-W8YU4qQuC5A",
"version" : {
"number" : "7.17.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd",
"build_date" : "2022-01-28T08:36:04.875279988Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
設(shè)置登陸密碼
- 在 elasticsearch.yml 配置文件中添加如下配置
xpack.security.enabled: true
- 執(zhí)行如下命令,進入到 elasticsearch 容器中。
docker exec -it elasticsearch /bin/bash
- 執(zhí)行如下命令,設(shè)置密碼。一共有七個用戶,依次設(shè)置這七個用戶的密碼,我這里統(tǒng)一將密碼設(shè)置成 123456。
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
- 退出容器,然后在 kibana.yml 文件中添加如下配置。
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
- 重新啟動容器,再次訪問頁面,會出現(xiàn)彈框,輸入用戶名和密碼登陸即可。默認用戶名為:elastic 。
docker-compose down
docker-compose up -d
完整配置文件內(nèi)容
更多配置可以參考官方文檔。
- elasticsearsh.yml
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true
- kibana.yml
server.host: 0.0.0.0
server.name: kibana
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
Spring Boot 整合 Elasticsearch
Spring Data Elasticsearch 官方文檔
添加依賴
Spring Boot 版本要與 Elasticsearch 版本對應上,對應關(guān)系如下圖所示。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<!-- 版本為 Spring Boot 版本 -->
<version>2.7.5</version>
</dependency>
添加配置
在 application.yaml 配置文件中新增如下配置。
spring:
elasticsearch:
username: elastic
password: 123456
uris: http://192.168.107.65:9200 // 虛擬機地址
connection-timeout: 10s
使用
本文只介紹 Elasticsearch 的基本使用,更詳細的用法可以查看官方文檔。
- 引入 ElasticsearchRestTemplate
@RestController
@RequestMapping("/demo")
public class Demo {
@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
/**
* 創(chuàng)建索引
**/
@GetMapping("/createIndex")
public void createIndex() {
IndexOperations indexOps = esRestTemplate.indexOps(IndexCoordinates.of("elasticsearch"));
boolean result = indexOps.create();
}
}
- 訪問地址,創(chuàng)建索引。然后通過 Kibana 查看新增的索引。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-saUbKMoN-1686135145070)(null)]
問題
-
elasticsearch 容器啟動報錯。原因是掛載的 data 目錄權(quán)限不夠。
解決:執(zhí)行命令
chmod -R 777 data
,然后重新啟動容器即可。
-
elasticsearch 容器內(nèi)存占用高達 13G。文章來源:http://www.zghlxwxcb.cn/news/detail-741374.html
解決:在 docker-compose.yaml 文件中添加如下配置,指定 JVM 內(nèi)存占用大小。文章來源地址http://www.zghlxwxcb.cn/news/detail-741374.html
environment:
- ES_JAVA_OPTS= -Xms2g -Xmx2g
到了這里,關(guān)于使用 Docker Compose 部署 Elasticsearch + Kibana的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!