本篇文章主要介绍了使用 Docker Compse 部署 Elasticsearch + Kibana,并整合到 Spring Boot 项目中的详细步骤。
Elasticsearch + Kibana 版本: 7.17.0(7 的最新版本);Spring Boot 版本:2.7.5 。
Kibana 官方文档、Elasticsearch官方文档
—— root
|—— mall // 根目录
|—— pack
|—— elastic
|-- config
|-- elasticsearch.yml // Elasticsearch 配置文件
|-- data // Elasticsearch 数据目录
|-- plugins // Elasticsearch 插件目录
|-- docker-compose.yaml // 启动容器
|-- kibana
|-- kibana.yml kibana 配置文件
network.host: 0.0.0.0
discovery.type: single-node
server.host: 0.0.0.0
server.name: kibana
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 内存大小
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: # 网络配置
- elasticsearch-network
kibana:
restart: always
image: kibana:7.17.0
container_name: kibana
ports:
- 5601:5601
depends_on: # 服务依赖
- elasticsearch
volumes:
- ~/mall/pack/elastic/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- kibana-network
networks:
elasticsearch-network:
kibana-network:
docker-compose up -d // 启动容器
docker-compose logs -f // 查看容器启动日志
{
"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"
}
xpack.security.enabled: true
docker exec -it elasticsearch /bin/bash
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
docker-compose down
docker-compose up -d
更多配置可以参考官方文档。
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: true
server.host: 0.0.0.0
server.name: kibana
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
Spring Data Elasticsearch 官方文档
Spring Boot 版本要与 Elasticsearch 版本对应上,对应关系如下图所示。
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-elasticsearchartifactId>
<version>2.7.5version>
dependency>
在 application.yaml 配置文件中新增如下配置。
spring:
elasticsearch:
username: elastic
password: 123456
uris: http://192.168.107.65:9200 // 虚拟机地址
connection-timeout: 10s
本文只介绍 Elasticsearch 的基本使用,更详细的用法可以查看官方文档。
@RestController
@RequestMapping("/demo")
public class Demo {
@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
/**
* 创建索引
**/
@GetMapping("/createIndex")
public void createIndex() {
IndexOperations indexOps = esRestTemplate.indexOps(IndexCoordinates.of("elasticsearch"));
boolean result = indexOps.create();
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-saUbKMoN-1686135145070)(null)]
elasticsearch 容器启动报错。原因是挂载的 data 目录权限不够。
解决:执行命令 chmod -R 777 data
,然后重新启动容器即可。
elasticsearch 容器内存占用高达 13G。
解决:在 docker-compose.yaml 文件中添加如下配置,指定 JVM 内存占用大小。
environment:
- ES_JAVA_OPTS= -Xms2g -Xmx2g