#!/bin/bash
# 设置变量
ES_VERSION="7.12.1"
KIBANA_VERSION="7.12.1"
ES_CONTAINER="es"
KIBANA_CONTAINER="kibana"
NETWORK_NAME="es-net"
ES_DATA_VOLUME="es-data"
ES_PLUGINS_VOLUME="es-plugins"
ES_PORT=9200
KIBANA_PORT=5601
# 1️⃣ 检查是否安装 Docker & Docker Compose
echo "📌 检查 Docker 是否已安装..."
if ! command -v docker &> /dev/null; then
echo "❌ Docker 未安装,正在安装..."
sudo apt update && sudo apt install -y docker.io
sudo systemctl start docker && sudo systemctl enable docker
else
echo "✅ Docker 已安装"
fi
# 2️⃣ 创建 Docker 网络
echo "📌 创建 Docker 网络: $NETWORK_NAME"
docker network create $NETWORK_NAME 2>/dev/null || echo "✅ 网络已存在"
# 3️⃣ 运行 Elasticsearch 容器
echo "🚀 启动 Elasticsearch ($ES_VERSION)..."
docker run -d \
--name $ES_CONTAINER \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v $ES_DATA_VOLUME:/usr/share/elasticsearch/data \
-v /usr/share/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network $NETWORK_NAME \
-p $ES_PORT:9200 \
-p 9300:9300 \
elasticsearch:$ES_VERSION
# 4️⃣ 运行 Kibana 容器
echo "🚀 启动 Kibana ($KIBANA_VERSION)..."
docker run -d \
--name $KIBANA_CONTAINER \
-e ELASTICSEARCH_HOSTS=http://$ES_CONTAINER:9200 \
--network=$NETWORK_NAME \
-p $KIBANA_PORT:5601 \
kibana:$KIBANA_VERSION
# 5️⃣ 安装 IK 和拼音分词器
echo "📌 安装 IK 和拼音分词器..."
IK_PLUGIN_URL="https://release.infinilabs.com/analysis-pinyin/stable/elasticsearch-analysis-pinyin-7.12.1.zip"
PINYIN_PLUGIN_URL="https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-7.12.1.zip"
# 确保 plugins 目录存在
sudo mkdir -p /usr/share/elasticsearch/plugins
echo "⬇️ 下载 IK 分词器..."
sudo wget -q $IK_PLUGIN_URL -O ik.zip
sudo unzip -q ik.zip -d /usr/share/elasticsearch/plugins/ik
echo "⬇️ 下载拼音分词器..."
sudo wget -q $PINYIN_PLUGIN_URL -O pinyin.zip
sudo unzip -q pinyin.zip -d /usr/share/elasticsearch/plugins/pinyin
# 设置权限,确保 Elasticsearch 能加载插件
sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/plugins
# 删除临时安装包
rm -f ik.zip pinyin.zip
# 6️⃣ 重启 Elasticsearch 使插件生效
echo "🔄 重启 Elasticsearch..."
docker stop $ES_CONTAINER
sleep 5
docker start $ES_CONTAINER
# 7️⃣ 提示访问 Kibana
echo "🎉 部署完成!"
echo "📌 Elasticsearch: http://localhost:$ES_PORT"
echo "📌 Kibana: http://localhost:$KIBANA_PORT"
测试是否成功安装插件
GET _cat/plugins?v
如下:
IK分词器测试
POST _analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人"
}
如下:
拼音分词器
POST _analyze
{
"analyzer": "pinyin",
"text": "中国"
}
如下: