目录
一、安装 Elasticsearch
二、安装 Kibana
三、安装 IK 分词器
四、Elasticsearch 常用配置
五、Elasticsearch 常用命令
因为后续还需要部署 Kibana 容器,所以需要让 Elasticsearch 和 Kibana 容器互联。创建一个 Docker 网络:
docker network create es-net
以安装 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 容器:
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
退出容器后,重启容器以使配置生效:
docker restart es
访问 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"
}
拉取与 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 容器:
docker run -d \
--restart=always \
--name kibana \
--network es-net \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
kibana:8.6.0
访问 http://<服务器IP>:5601
,如果能够正常访问 Kibana 的 Web 界面,说明安装成功。
docker exec -it es /bin/bash
在容器内执行以下命令安装 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 容器以使插件生效:
docker restart es
进入容器的配置目录,编辑 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 服务端口
通过环境变量 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
创建索引
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 官方文档 或社区寻求帮助。