docker中使用docker-compose搭建Elasticsearch 7.8.0集群及安装IK分词器_docker-compos es ik-程序员宅基地

技术标签: elasticsearch  IK分词器  大数据  docker  

  • 创建如下文件夹
mkdir -p /usr/local/microservices/elasticSearch/{
    es_data01,es_data02,es_data03,es_conf/_data,es_plugins}
  • /usr/local/microservices/elasticSearch/es_conf/_data目录下编写ES的yml文件
vim  es01.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
vim  es02.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
vim  es03.yml

文件内容:
注意:需要修改文件中 network.publish_host,discovery.zen.ping.unicast.hosts 两个配置项的IP

cluster.name: elasticsearch-cluster
node.name: es-node3
network.bind_host: 0.0.0.0
network.publish_host: 192.168.31.70 #替换为docker宿主机IP
http.port: 9202
transport.tcp.port: 9302
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.31.70:9300","192.168.31.70:9301","192.168.31.70:9302"] #替换为docker宿主机IP
discovery.zen.minimum_master_nodes: 2
indices.query.bool.max_clause_count: 10240
  • /usr/local/microservices/elasticSearch目录下编写docker-compose.yml文件
vim docker-compose.yml

文件内容:

version: '2.2'
services:
  es01:
    image: elasticsearch:7.8.0
    container_name: es01
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data01:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
      - 9300:9300 
    networks:
      - es-net
    restart: always  
  es02:
    image: elasticsearch:7.8.0
    container_name: es02
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data02:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9201:9201
      - 9301:9301
    networks:
      - es-net
    restart: always 
  es03:
    image: elasticsearch:7.8.0
    container_name: es03
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - TAKE_FILE_OWNERSHIP=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./es_data03:/usr/share/elasticsearch/data 
      - ./es_conf/_data/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./es_plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9202:9202
      - 9302:9302
    networks:
      - es-net
    restart: always
    
networks:
   es-net:      
  • 防火墙开放以下配置端口

注意:此处一定要开放ES集群的内部通信端口,否则,ES集群无法互联

在这里插入图片描述

  • 设置最大虚拟内存值,避免过小无法支持ElasticSearch的运行
vi /etc/sysctl.conf

在文件末尾新增如下内容:

vm.max_map_count = 655360

刷新系统配置

sysctl  -p
  • 启动ES集群
docker-compose up -d
  • 查看是否启动成功
docker ps

在这里插入图片描述
在这里插入图片描述

  • 测试连接

注意,此处启动后需要大概等1分钟的样子才能执行测试语句,不然会出现如下错误,具体原因本人还不清楚,知道的小伙伴,可以下方评论告诉我,谢谢

错误如下:
curl: (56) Recv failure: Connection reset by peer
curl localhost:9200

出现如下内容则表示搭建成功:
在这里插入图片描述

  • 测试集群是否构建成功
## 浏览器输入
http://docker宿主机IP:9200/_cat/nodes?pretty

出现如下界面说明集群构建成功:
在这里插入图片描述

  • 常见问题

1.执行curl localhost:9200后不能出现ES信息,使用docker logs 容器ID命令查看日志,出现如下错误:

 [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase

解决方案:

vi /etc/sysctl.conf

在文件末尾新增如下内容:

vm.max_map_count = 655360

刷新系统配置

sysctl  -p

2.在docker宿主机上执行curl localhost:9200后可以出现ES信息,但是外网不能连接

在浏览器通过外网进行访问

http://docker宿主机IP:9200/
http://docker宿主机IP:9201/
http://docker宿主机IP:9202/

正常情况会出现如下页面:
在这里插入图片描述

若访问不到,可尝试如下解决办法:
2.1 检查防火墙,9200,9201,9202,这三个端口是否开放
2.2 重启docker,重启ES集群

3.出现503错误

{
    
    "error": {
    
        "root_cause": [
            {
    
                "type": "cluster_block_exception",
                "reason": "blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];"
            }
        ],
        "type": "cluster_block_exception",
        "reason": "blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];"
    },
    "status": 503
}

解决方案:
/usr/local/microservices/elasticSearch/下的es_data01,es_data02,es_data03,文件夹中的内容删除再重启
4.ES集群无法互联,单机访问没有问题,但是集群无法互联
解决方案:
检查上文中要求开放的9301,9302,9303,三个内部通信端口是否开通,开通后重启ES

在这里插入图片描述

2.将下载好的elasticsearch-analysis-ik-7.8.0.zip文件上传至/usr/local/microservices/elasticSearch/es_plugins目录下

3.将压缩包拷贝到容器

docker cp /usr/local/microservices/elasticSearch/es_plugins/elasticsearch-analysis-ik-7.8.0.zip  es01:/usr/share/elasticsearch/plugins

4.进入es01容器

docker exec -it es01 /bin/bash

5.创建目录

mkdir /usr/share/elasticsearch/plugins/ik

6.将文件压缩包移动到ik目录下

mv /usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-7.8.0.zip  /usr/share/elasticsearch/plugins/ik

5.进入ik目录

cd /usr/share/elasticsearch/plugins/ik

6.解压

unzip elasticsearch-analysis-ik-7.8.0.zip  

7.退出容器

exit

8.重启es集群
/usr/local/microservices/elasticSearch/目录下执行

#停止
docker-compose stop
#启动
docker-compose up -d
  • 测试Ik分词器
    1.未使用分词器
    在这里插入图片描述

2.使用分词器后
在这里插入图片描述

至此,搭建成功

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_46122292/article/details/125522363

智能推荐

Linux安装basemap_linux basemap安装-程序员宅基地

文章浏览阅读1.9k次。1、下载basemap包 https://github.com/matplotlib/basemap/releases2. 解压 tar -zxvf basemap-1.2.1rel.tar.gz3. 安装依赖包3、安装依赖包2、解压pip install numpy -i https://mirrors.aliyun.com/pypi/simplepip install matplotlib -i https://mirrors.al.._linux basemap安装

2020-7-3中兴IC开发设计师 专业面,-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏7次。面试岗位:IC开发设计师先2min自我介绍,然后面试官让选一个自己的项目详细介绍。介绍完根据项目提问,问我后端综合的时候有没有碰到什么时序问题。答:后端不是我的主要工作,不清楚。【后期需要补充后端综合时序问题】面试官再问:有木有别的跟IC设计相关的新目。很遗憾,我只准备了这一个项目,就只能回答没有。问你这些设计都会设计到算法,为什么不搞算法。问:对加班怎么看问:你还有什么问题...

BPI-Bit 开发板带有Xtensa 32位LX6双核处理器的嵌入式系统的ESP 32_xtensa lx6-程序员宅基地

文章浏览阅读1.7k次。BPI:bit(也称为BPI-bit,作为webduino:bit)是一个带有Xtensa 32位LX6双核处理器的嵌入式系统的ESP 32。支持Webduino、Arduino、微python以及Scratch X编程环境。BPI:一些开发板5厘米宽5厘米长,重约10 ~ 12克,除了以下20销金手指接口,内置一个25全彩LED照明矩阵,两个光敏电阻按钮开关温度传感电阻蜂鸣器和九轴传感器(三轴加速度三轴陀螺仪和三轴磁罗盘),空间配置如下:全色LED矩阵:4光敏传感器:36(左)39(A3右上)按钮_xtensa lx6

2017界面UI设计风格流行什么?(二)_ui界面设计风格线性化-程序员宅基地

文章浏览阅读373次。那么卡片化呢? 如果你的想法创意还停留在卡片阶段,那就落伍了,因为无框界面的发展过程中,卡片逐渐被淡化。卡片是否有存在的必要?用户更多的不会去关注,他们只注意来这里的最终功能所在,界面对他们来讲或许只是寻求信息的方式。没错,卡片化的由来有它一定的道理。几年前大家注意到显示屏的尺寸越来越不可预期,设计师也需要一种方式来让设计出的界面能够适应不同尺寸的屏幕。卡片刚好能够解决这一_ui界面设计风格线性化

CRC循环校验码的系统仿真及其应用_simulink modbus crc16 检验模块-程序员宅基地

文章浏览阅读2.7k次,点赞7次,收藏40次。CRC即循环冗余校验码,是数据通信领域中最常用的一种检错校验码,其特征是信息字段和校验字段的长度可以任意选定,循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性循环冗余码CRC检验技术广泛应用于测控及通信领域。CRC计算可以靠专用的硬件来实现,但是对于低成本的微控制器系统,在没有硬件支持下实现CRC检验,关键的问题就是如何通过软件来完成CRC计算,也就是CRC算法的问题。_simulink modbus crc16 检验模块

Food Buying(CF-1296B)_t 组数据,每组给出 1 个数 n,代表有 n 元钱,现在用这 n 元钱买东西,每买 10 元返-程序员宅基地

文章浏览阅读789次。Problem DescriptionMishka wants to buy some food in the nearby shop. Initially, he has s burles on his card.Mishka can perform the following operation any number of times (possibly, zero): choose..._t 组数据,每组给出 1 个数 n,代表有 n 元钱,现在用这 n 元钱买东西,每买 10 元返

随便推点

STM32F030 使用内部时钟和外部时钟_pll_source_hsi-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏10次。static void SetSysClock(void){ __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/#if defined (PLL_SOURCE_HSI) /..._pll_source_hsi

Android实现三级联动下拉框 下拉列表spinner_android省市县下拉框-程序员宅基地

文章浏览阅读2.1k次,点赞2次,收藏7次。Android实现(省、市、县)三级联动下拉框 下拉列表spinner主要实现办法:动态加载各级下拉值的适配器在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值_android省市县下拉框

amd为什么还用针脚_彻底翻盘!AMD 锐龙9 3900X与锐龙7 3700X评测-程序员宅基地

文章浏览阅读291次。前言AMD于一个月多前的台北电脑展上发布了新的Zen2架构锐龙3000系列处理器,代号“Matisse”。虽然之前大家已经收到许多消息,包括7nm工艺的进步,Zen2架构的chiplet多Die设计,IPC的提升等,但是对新处理器性能的表现还是有很大的期待。现在新的锐龙处理器3900X、3700X和X570主板已经来到PCEVA评测室,我们就一起来看看它的效能表现。Zen2架构的设计在实..._3900 pbo2

获得客户机IP,主机名,端口和用户,java获取客户机信息-程序员宅基地

文章浏览阅读1.6k次。request.getHeader("User-Agent"); //就是取得客户端的系统版本 request.getRemoteAddr(); //取得客户端的IP request.getRemoteHost() //取得客户端的主机名 request.getRemotePort(); //取得客户端的端口 request.getRemo..._如何获取发送请求的客户机的ip

QT+opencv安装笔记-程序员宅基地

文章浏览阅读175次。安装时出现的问题:我使用的build_opencv是别人编译好的,我不知道有可能会存在兼容性的问题(安装时报错,完成后缺失install文件)https://blog.csdn.net/qq_33308135/article/details/85049795复制的build_opencv文件位置:https://pan.baidu.com/s/1KsB553FYyLjmQ-j2OztxQQ...

NX二次开发基础_nx mcd二次开发-程序员宅基地

文章浏览阅读2.2k次。Nx的二次开发项目常用的创建方式有3种,1.NX开发向导(vc6中开发需要将UgOpen_18.awx和UgOpen_v18.hip文件复制到vs\common\msdev98\bin\ide目录)、2.WIN32应用程序向导、3.MFC应用程序向导。注册项目路径有2种方法:配置文件法和修改环境变量法1配置文件法:在配置文件custom_dirs.dat(位于%UGII_BASE_D..._nx mcd二次开发