目录
一、安装 Elasticsearch
(一)创建 Docker 网络
因为后续还需要部署 Kibana 容器,所以需要让 Elasticsearch 和 Kibana 容器互联。创建一个 Docker 网络:
docker network create es-net
(二)拉取 Elasticsearch 镜像
以安装 Elasticsearch 8.6.0 版本为例,执行以下命令拉取镜像:
docker pull elasticsearch:8.6.0
(三)创建挂载点目录
创建用于挂载数据、配置和插件的目录,并设置权限:
mkdir -p /usr/local/es/data /usr/local/es/config /usr/local/es/plugins
chmod 777 /usr/local/es/data
chmod 777 /usr/local/es/config
chmod 777 /usr/local/es/plugins
(四)部署单点 Elasticsearch 容器
运行以下命令启动 Elasticsearch 容器:
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/es/data:/usr/share/elasticsearch/data \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
elasticsearch:8.6.0
(五)关闭安全验证(可选)
进入 Elasticsearch 容器,关闭安全验证功能:
docker exec -it es /bin/bash
cd config
echo 'xpack.security.enabled: false' >> elasticsearch.yml
(六)重启 Elasticsearch 容器
退出容器后,重启容器以使配置生效:
docker restart es
(七)测试 Elasticsearch 是否安装成功
访问 http://<服务器IP>:9200
,如果返回类似以下内容,说明安装成功:
{
"name" : "es",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "xxxxxx",
"version" : {
"number" : "8.6.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "xxxxxx",
"build_date" : "xxxxxx",
"build_snapshot" : false,
"lucene_version" : "xxxxxx",
"minimum_wire_compatibility_version" : "xxxxxx",
"minimum_index_compatibility_version" : "xxxxxx"
},
"tagline" : "You Know, for Search"
}
二、安装 Kibana
(一)拉取 Kibana 镜像
拉取与 Elasticsearch 版本匹配的 Kibana 镜像:
docker pull kibana:8.6.0
(二)创建挂载点目录
创建用于挂载 Kibana 数据和配置的目录,并设置权限:
mkdir -p /usr/local/kibana/config /usr/local/kibana/data
chmod 777 /usr/local/kibana/data
chmod 777 /usr/local/kibana/config
(三)部署 Kibana 容器
运行以下命令启动 Kibana 容器:
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.6.0
(四)测试 Kibana 是否安装成功
访问 http://<服务器IP>:5601
,如果能够正常访问 Kibana 的 Web 界面,说明安装成功。
三、安装 IK 分词器
(一)进入 Elasticsearch 容器
docker exec -it es /bin/bash
(二)安装 IK 分词器
在容器内执行以下命令安装 IK 分词器:
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip
(三)重启 Elasticsearch 容器
退出容器后,重启 Elasticsearch 容器以使插件生效:
docker restart es
四、Elasticsearch 常用配置
(一)修改 Elasticsearch 配置文件
进入容器的配置目录,编辑 elasticsearch.yml
文件:
docker exec -it es /bin/bash
cd config
vim elasticsearch.yml
常见的配置项包括:
cluster.name
:设置集群名称node.name
:设置节点名称path.data
:设置数据存储路径path.logs
:设置日志存储路径network.host
:设置绑定的网络接口http.port
:设置 HTTP 服务端口
(二)设置 JVM 堆大小
通过环境变量 ES_JAVA_OPTS
设置 JVM 堆大小,例如:
docker run -d \
--restart=always \
--name es \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
--privileged \
-v /usr/local/es/data:/usr/share/elasticsearch/data \
-v /usr/local/es/plugins:/usr/share/elasticsearch/plugins \
-e "discovery.type=single-node" \
-e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \
elasticsearch:8.6.0
五、Elasticsearch 常用命令
(一)索引操作
创建索引
curl -X PUT "http://<服务器IP>:9200/my_index" -H 'Content-Type: application/json' -d' { "settings": { "number_of_shards": 3, "number_of_replicas": 2 } } '
删除索引
curl -X DELETE "http://<服务器IP>:9200/my_index"
查看索引
curl -X GET "http://<服务器IP>:9200/_cat/indices?v"
(二)文档操作
添加文档
curl -X POST "http://<服务器IP>:9200/my_index/_doc/1" -H 'Content-Type: application/json' -d' { "field1": "value1", "field2": "value2" } '
查询文档
curl -X GET "http://<服务器IP>:9200/my_index/_doc/1"
更新文档
curl -X POST "http://<服务器IP>:9200/my_index/_doc/1/_update" -H 'Content-Type: application/json' -d' { "doc": { "field1": "new_value1" } } '
删除文档
curl -X DELETE "http://<服务器IP>:9200/my_index/_doc/1"
(三)集群状态查询
curl -X GET "http://<服务器IP>:9200/_cluster/health?pretty"
六、总结
通过以上步骤,你可以在 Docker 上成功安装 Elasticsearch,并配置常用的网络、数据挂载和插件安装。掌握这些常用命令,可以帮助你更高效地管理和使用 Elasticsearch 集群。如果在使用过程中遇到任何问题,可以参考 Elasticsearch 官方文档 或社区寻求帮助。