Docker安装ElasticSearch 版本7.6.2

本文介绍如何使用Docker部署ElasticSearch及其ik中文分词插件,包括搜索并拉取镜像、配置端口映射、设置容器参数及安装配置ik插件等步骤。

一、Docker 部署 ElasticSearch

1、从仓库中查找所有ElasticSearch的镜像

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ pwd
/home/hn_home/docker/elasticsearch

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker search elasticsearch
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 

2、选择一个版本镜像进行拉取

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker pull docker.io/library/elasticsearch:7.6.2
Trying to pull repository docker.io/library/elasticsearch ... 
7.6.2: Pulling from docker.io/library/elasticsearch
c808caf183b6: Pull complete 
d6caf8e15a64: Pull complete 
b0ba5f324e82: Pull complete 
d7e8c1e99b9a: Pull complete 
85c4d6c81438: Pull complete 
3119218fac98: Pull complete 
914accf214bb: Pull complete 
Digest: sha256:59342c577e2b7082b819654d119f42514ddf47f0699c8b54dc1f0150250ce7aa
Status: Downloaded newer image for docker.io/library/elasticsearch:7.6.2
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ ll
total 0

3、查看镜像

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
docker.io/redis                                 latest              ef47f3b6dc11        5 weeks ago         104 MB
docker.io/mysql                                 latest              dd7265748b5d        2 months ago        545 MB
docker.elastic.co/elasticsearch/elasticsearch   7.6.2               f29a1ee41030        10 months ago       791 MB
docker.io/elasticsearch                         7.6.2               f29a1ee41030        10 months ago       791 MB
docker.io/mongo                                 4.2.1               965553e202a4        14 months ago       363 MB
docker.io/java                                  8                   d23bdf5b1b1b        4 years ago         643 MB
docker.io/mobz/elasticsearch-head               5                   b19a5c98e43b        4 years ago         824 MB

4、通过镜像,启动一个容器,并将9200和9300端口映射到本机(ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口)

然后把文件的映射全部映射到宿主机

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ mkdir data
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ mkdir logs
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ mkdir plugins
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ mkdir config
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ chmod -R 775 data
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ chmod -R 775 logs
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ chmod -R 775 plugins
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ chmod -R 775 config
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ ll
total 12
drwxrwxr-x 2 hn-zcsjw hn-zcsjw 4096 Jan 21 09:46 data
drwxrwxr-x 2 hn-zcsjw hn-zcsjw 4096 Jan 21 09:46 logs
drwxrwxr-x 2 hn-zcsjw hn-zcsjw 4096 Jan 21 09:46 plugins
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker run -p 9200:9200 -p 9300:9300 
--privileged=true --name es7.6.2 

-e “discovery.type=single-node”
-e ES_JAVA_OPTS="-Xms512m -Xmx1024m"
-v /home/hn_home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /home/hn_home/docker/elasticsearch/data:/usr/share/elasticsearch/data
-v /home/hn_home/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
-d elasticsearch:7.6.2
d0e751a0047da73bcaf7ae9109183e74aeb028d80dbdf074973b313220ef5f6f
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$

把容器内Elasticsearch的配置文件复制到本地:如果有修改配置文件的需求的话

#从容器内,将配置文件copy出来
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker cp -a es7.6.2:/usr/share/elasticsearch/config/ /home/hn_home/docker/elasticsearch/
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 

给Elastic配置可访问IP、以及ES_Name配置
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ sudo chmod 776 config/elasticsearch.yml 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ vi config/elasticsearch.yml
#如下配置写入
cluster.name: "docker-cluster"
network.host: 0.0.0.0

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ cat config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0


然后删除已运行的容器
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker stop es7.6.2
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker rm es7.6.2

然后重新运行,参数全部使用本地的挂载
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ docker run -p 9200:9200 -p 9300:9300 

–privileged=true --name es7.6.2
-e “discovery.type=single-node”
-e ES_JAVA_OPTS="-Xms512m -Xmx1024m"
-v /home/hn_home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /home/hn_home/docker/elasticsearch/data:/usr/share/elasticsearch/data
-v /home/hn_home/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
-v /home/hn_home/docker/elasticsearch/config:/usr/share/elasticsearch/config
-d elasticsearch:7.6.2

7eaeef682d2897703059e137406dbb1e01fd23e2b7493a57c1e17ebea970dd0e
[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 

5、 浏览器访问ip:9200

{
  "name" : "f03270ef8672",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "mgb4vDWvQCWTgvkPG3TU4Q",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

二、Docker部署ik中文分词插件

1、进入es容器内部,/plugins下新建ik文件夹

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ cd plugins/
[hn-jw@iZbp1gp1t778obaz5m8vk8Z plugins]$ mkdir ik
[hn-jw@iZbp1gp1t778obaz5m8vk8Z plugins]$ ll
total 4
drwxrwxr-x 2 hn-zcsjw hn-zcsjw 4096 Jan 21 10:09 ik
[hn-jw@iZbp1gp1t778obaz5m8vk8Z plugins]$ cd ik
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
100%[===============================================================================>] 4,504,473   21.5KB/s   in 4m 3s  

2021-01-21 10:15:55 (18.1 KB/s) - ‘elasticsearch-analysis-ik-7.6.2.zip’ saved [4504473/4504473]

[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ unzip elasticsearch-analysis-ik-7.6.2.zip 
Archive:  elasticsearch-analysis-ik-7.6.2.zip
   creating: config/
  inflating: config/main.dic         
  inflating: config/quantifier.dic   
  inflating: config/extra_single_word_full.dic  
  inflating: config/IKAnalyzer.cfg.xml  
  inflating: config/surname.dic      
  inflating: config/suffix.dic       
  inflating: config/stopword.dic     
  inflating: config/extra_main.dic   
  inflating: config/extra_stopword.dic  
  inflating: config/preposition.dic  
  inflating: config/extra_single_word_low_freq.dic  
  inflating: config/extra_single_word.dic  
  inflating: elasticsearch-analysis-ik-7.6.2.jar  
  inflating: httpclient-4.5.2.jar    
  inflating: httpcore-4.4.4.jar      
  inflating: commons-logging-1.2.jar  
  inflating: commons-codec-1.9.jar   
  inflating: plugin-descriptor.properties  
  inflating: plugin-security.policy  


IK配置成功后还是要重启一下,否则不生效
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ docker stop es7.6.2
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ docker rm es7.6.2
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ 
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ docker run -p 9200:9200 -p 9300:9300 --name es7.6.2 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx1024m" -v /home/hn_home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v /home/hn_home/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /home/hn_home/docker/elasticsearch/logs:/usr/share/elasticsearch/logs -v /home/hn_home/docker/elasticsearch/config:/usr/share/elasticsearch/config -d elasticsearch:7.6.2
a0f0592bc2f3f4467251437a32737d76b2cd0f4a0034cf0ea7197de1c16f8632
[hn-jw@iZbp1gp1t778obaz5m8vk8Z ik]$ 

三:docker 内Elasticsearch使用

# 查看集群健康状态
curl 127.0.0.1:9200/_cat/health?v
# 查看节点健康状态
curl 127.0.0.1:9200/_cat/nodes?v
# 查看索引信息
curl 127.0.0.1:9200/_cat/indices?v

[hn-zcsjw@iZbp1gp1t778obaz5m8vk8Z config]$  curl http://127.0.0.1:9200/
{
  "name" : "7ab1554168d9",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "mgb4vDWvQCWTgvkPG3TU4Q",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Docker安装Elasticsearch已基本完成,从中我们可以清晰感受到Docker的强大之处!

四:发一个挂掉后自动重启的包,指定容器内存大小的启动参数

[hn-jw@iZbp1gp1t778obaz5m8vk8Z elasticsearch]$ 
docker run --restart=on-failure:10 -d -m 2G --memory-swap 4G -p 9200:9200 

-p 9300:9300 --privileged=true --name es7.6.2
-e “discovery.type=single-node”
-e ES_JAVA_OPTS="-Xms512m -Xmx1024m"
-v /home/hn_home/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
-v /home/hn_home/docker/elasticsearch/data:/usr/share/elasticsearch/data
-v /home/hn_home/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
-v /home/hn_home/docker/elasticsearch/config:/usr/share/elasticsearch/config
-d elasticsearch:7.6.2

五:课外知识

9300 是TCP协议端口号,ES集群之间通讯端口号

9200 端口号,暴露ES RESTful接口端口号

我们常用的Head插件都连接9200、java客户端也连:9200

<think>嗯,用户询问在D 部署的 Elasticsearch 7.6.2 中查看 JDK 版本的方法。这需要结合多个引用内容来分析。 引用[3]提到 Elasticsearch 7.6.2 内置了 JDK,不需要额外安装。这意味着用户不需要在宿主机安装 JDK,Elasticsearch 容器内部自带 JDK。这很重要。 用户的问题是在 Docker 环境中查看,引用[2][4]提供了 Docker 运行命令的示例,其中都设置了 Java 内存参数:$ES_JAVA_OPTS$。这说明容器内部确实运行着 JVM。 因此查看方法应该是进入容器内部执行命令。有两种方式: 1. 通过 docker exec 在容器内运行 $java -version$ 命令 2. 通过 Elasticsearch 的 REST API 查询节点信息,其中会包含 JVM 版本 第一种方法更直接准确。具体步骤: 1. 确认容器名称或 ID 2. 执行 $docker exec -it 容器名 bash$ 进入容器 3. 执行 $java -version$ 查看版本 需要注意:由于容器可能未安装完整工具,引用[4]提到内存设置较小($Xms64m$),但查询命令不受影响。 同时引用[1]强调需要 JDK1.8 以上,而 7.6.2 内置的 JDK 应满足要求。 </think> 在回答你的问题前,我注意到引用[3]明确说明:**Elasticsearch 7.x开始内置了JDK不需要安装了**。以下是查看Docker部署的Elasticsearch 7.6.2中JDK版本的方法: ### 方法1:通过容器Shell查询(推荐) ```bash # 进入Elasticsearch容器 docker exec -it <容器名称> bash # 查看内置JDK版本 ./bin/elasticsearch -v ``` 执行后将显示类似: ``` Version: 7.6.2, Build: default/build/7.6.2/... **Built with JDK 1.8.0_242** # 这里显示JDK版本 ``` ### 方法2:通过REST API查询 ```bash curl -X GET "localhost:9200/_nodes/jvm?pretty" ``` 在返回的JSON中查找: ```json "jvm" : { "version" : "1.8.0_242", "vm_name" : "OpenJDK 64-Bit Server VM" } ``` ### 关键说明 1. **无需单独安装JDK**:Elasticsearch 7.6.2已捆绑JDK(通常是OpenJDK 8),如引用[3]所述[^3] 2. **容器内存设置**:如引用[2][4]所示,通过`-e "ES_JAVA_OPTS=-Xms2g -Xmx2g"`控制JVM内存[^2][^4] 3. **版本验证**:内置JDK版本通常与Elasticsearch版本匹配,7.6.2对应JDK 1.8 ### 操作示例 ```bash # 假设容器名为elasticsearch docker exec -it elasticsearch ./bin/elasticsearch -v # 输出示例: # Version: 7.6.2, Build: default/docker/ef48eb35cf30adf4db14086e8aabd07ef6fb113f/2020-03-26T06:34:37.794943Z # **OS Name: Linux, JVM: Oracle Corporation 1.8.0_242-b08** ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值