ES、Kibana一键式部署脚本执行文件,外加IK分词器和拼音分词器

发布于:2025-03-19 ⋅ 阅读:(20) ⋅ 点赞:(0)
#!/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": "中国"
}

如下: