目 录CONTENT

文章目录

docker安装ElasticSearch

zhouzz
2024-09-25 / 0 评论 / 0 点赞 / 11 阅读 / 10201 字
温馨提示:
本文最后更新于 2024-09-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本地虚拟机内CentOS7安装elasticsearch-7.14.0,采用docker是比较方便的。

1.安装elasticsearch

1.1 创建网络

因为我们还需要部署kibana容器,需要让es和kibana容器互联,所以这里先创建一个网络:

docker network create es-net

1.2 查看镜像

docker search elasticsearch

1.3 拉取7.14.0版本

docker pull elasticsearch:7.14.0

1.4.准备挂载数据的文件夹

挂载就是就是将宿主机文件夹和容器内的文件夹做映射,这样在向容器内传文件时可以直接传到宿主机映射的文件夹中,更方便修改。

创建四个新的文件夹作为ES挂载用。

mkdir -p /app/docker/es/standalone/{config,data,logs,plugins}

1.5 创建容器并运行

docker run -d \
	--name es \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -e discovery.type="single-node" \
    -v /app/docker/es/standalone/data:/usr/share/elasticsearch/data \
    -v /app/docker/es/standalone/logs:/usr/share/elasticsearch/logs \
    -v /app/docker/es/standalone/plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.14.0

ps:启动时会有错误

[0.001s][error][logging] Error opening log file 'logs/gc.log': Permission denied

解决方案:
chown -R 1000:1000 /app/docker/es/standalone

1.6 测试是否启动成功

本地查看

curl http://localhost:9200

{
  "name" : "19b9cf4d18ca",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "JXp6Iv6NTv2ztRnIZYbF1w",
  "version" : {
    "number" : "7.14.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
    "build_date" : "2021-07-29T20:49:32.864135063Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

外部浏览器查看:

http://192.168.23.100:9200

{
  "name" : "313304c60398",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "8zMFNSYxStanYg20zzLEZg",
  "version" : {
    "number" : "7.14.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
    "build_date" : "2021-07-29T20:49:32.864135063Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

1.7 挂载config

如果想挂载config目录,在第一次启动时config文件夹是没有文件的,直接挂载会报错。

Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options

我们可以先让ES实例不挂载config,之后采用手动进行将容器内的文件拷贝出来。

docker cp es:/usr/share/elasticsearch/config /app/docker/es/standalone

chown -R 1000:1000 /app/docker/es

然后停止并删除掉之前的容器,再次用下面的命令启动。

docker stop es
docker rm es

docker run -d \
	--name es \
    -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    -e discovery.type="single-node" \
    -v /app/docker/es/standalone/config:/usr/share/elasticsearch/config \
    -v /app/docker/es/standalone/data:/usr/share/elasticsearch/data \
    -v /app/docker/es/standalone/plugins:/usr/share/elasticsearch/plugins \
    -v /app/docker/es/standalone/logs:/usr/share/elasticsearch/logs \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.14.0

2.开通9200、9300端口防火墙

执行如下命令开通9200、9300端口

firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent

重新加载防火墙使开放的端口即时生效

firewall-cmd --reload

查看开放的公共端口列表

firewall-cmd --zone=public --list-ports

3.部署kibana

kibana可以给我们提供一个elasticsearch的可视化界面,便于操作。

  1. 拉取kibana镜像
docker pull kibana:7.14.0
  1. 创建并运行kibana容器
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.14.0
  • --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
  • -e ELASTICSEARCH_HOSTS=http://es:9200:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
  • -p 5601:5601:端口映射配置

3.开放5601端口

firewall-cmd --zone=public --add-port=5601/tcp --permanent

firewall-cmd --reload

4.测试

http://192.168.23.100:5601

4.安装分词插件

4.1 安装IK分词器插件

1.github下载ik插件

elasticsearch-analysis-ik-source-7.14.0.zip

elasticsearch-analysis-ik-7.14.0.zip

2.将安装包移动到挂载目录 /app/docker/es/plugins/ik/ 中

mkdir -p /app/docker/es/plugins/ik

cd /app/docker/es/plugins/ik

unzip elasticsearch-analysis-ik-7.14.0.zip

-rw-r--r--. 1 root root 5225922 Apr 25  2021 extra_main.dic
-rw-r--r--. 1 root root   63188 Apr 25  2021 extra_single_word.dic
-rw-r--r--. 1 root root   63188 Apr 25  2021 extra_single_word_full.dic
-rw-r--r--. 1 root root   10855 Apr 25  2021 extra_single_word_low_freq.dic
-rw-r--r--. 1 root root     156 Apr 25  2021 extra_stopword.dic
-rw-r--r--. 1 root root     625 Apr 25  2021 IKAnalyzer.cfg.xml
-rw-r--r--. 1 root root 3058510 Apr 25  2021 main.dic
-rw-r--r--. 1 root root     123 Apr 25  2021 preposition.dic
-rw-r--r--. 1 root root    1824 Apr 25  2021 quantifier.dic
-rw-r--r--. 1 root root     164 Apr 25  2021 stopword.dic
-rw-r--r--. 1 root root     192 Apr 25  2021 suffix.dic
-rw-r--r--. 1 root root     752 Apr 25  2021 surname.dic

3.删除压缩包

rm -rf elasticsearch-analysis-ik-7.14.0.zip

4.重启es

docker restart es

5.测试分词

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "时间管理大师"
}

4.2 安装pinyin分词器插件

1.github下载pinyin插件

elasticsearch-analysis-pinyin-source-7.14.0.zip

elasticsearch-analysis-pinyin-7.14.0.zip

2.将安装包移动到挂载目录 /app/docker/es/plugins/pinyin/ 中

mkdir -p /app/docker/es/plugins/pinyin

cd /app/docker/es/plugins/pinyin

unzip elasticsearch-analysis-pinyin-7.14.0.zip

-rw-r--r--. 1 root root 5225922 Apr 25  2021 extra_main.dic
-rw-r--r--. 1 root root   63188 Apr 25  2021 extra_single_word.dic
-rw-r--r--. 1 root root   63188 Apr 25  2021 extra_single_word_full.dic
-rw-r--r--. 1 root root   10855 Apr 25  2021 extra_single_word_low_freq.dic
-rw-r--r--. 1 root root     156 Apr 25  2021 extra_stopword.dic
-rw-r--r--. 1 root root     625 Apr 25  2021 IKAnalyzer.cfg.xml
-rw-r--r--. 1 root root 3058510 Apr 25  2021 main.dic
-rw-r--r--. 1 root root     123 Apr 25  2021 preposition.dic
-rw-r--r--. 1 root root    1824 Apr 25  2021 quantifier.dic
-rw-r--r--. 1 root root     164 Apr 25  2021 stopword.dic
-rw-r--r--. 1 root root     192 Apr 25  2021 suffix.dic
-rw-r--r--. 1 root root     752 Apr 25  2021 surname.dic

3.删除压缩包

rm -rf elasticsearch-analysis-pinyin-7.14.0.zip

4.重启es

docker restart es

5.测试分词

# 创建一个拼音的索引
PUT /pinyin_test/ 
{
    "settings" : {
        "analysis" : {
            "analyzer" : {
                "pinyin_analyzer" : {
                    "tokenizer" : "my_pinyin"
                    }
            },
            "tokenizer" : {
                "my_pinyin" : {
                    "type" : "pinyin",
                    "keep_separate_first_letter" : false,
                    "keep_full_pinyin" : true,
                    "keep_original" : true,
                    "limit_first_letter_length" : 16,
                    "lowercase" : true,
                    "remove_duplicated_term" : true
                }
            }
        }
    }
}

# 通过一个中文名测试下拼音分词
GET /pinyin_test/_analyze
{
  "text": ["刘德华"],
  "analyzer": "pinyin_analyzer"
}

# 创建索引映射
POST /pinyin_test/_mapping 
{
  "properties": {
      "name": {
          "type": "keyword",
          "fields": {
              "pinyin": {
                  "type": "text",
                  "store": false,
                  "term_vector": "with_offsets",
                  "analyzer": "pinyin_analyzer",
                  "boost": 10
              }
          }
      }
  }
}

# 添加一条记录
POST /pinyin_test/_create/1001
{"name":"刘德华"}

# 根据拼音查询
GET /pinyin_test/_search
{
  "query":{
    "match": {
      "name.pinyin": "liu"
    }
  }
}
0

评论区