首页 > 其他分享 >基于docker-compose搭建ES服务

基于docker-compose搭建ES服务

时间:2023-08-22 10:47:12浏览次数:60  
标签:7.16 compose ik elasticsearch es01 docker es02 ES

一、单节点线下测试

拉取镜像

1、 进入实验机器

go 10.10.10.10

2、 拉取es 7.16.2镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.16.2

安装ik分词器

1、 启动容器

docker run -d -p 0.0.0.0:9200:9200 -p 0.0.0.0:9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.16.2

2、 安装ik分词器

a. 查看刚启动的容器,找到CONTAINER ID

docker ps 

b. 安装ik

注意: ik分词器需要版本和es版本一致,例如es版本是7.16.2,ik分词器也需要是7.16.2

docker exec [CONTAINERID] ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.16.2/elasticsearch-analysis-ik-7.16.2.zip

c. 重启容器

docker restart [CONTAINERID]

如果要保存带ik分词器的镜像,可以如下提交镜像

docker commit [CONTAINERID] elasticsearch_ik:8.0.0

然后就可以push到hub或者本地保存镜像

二、多节点docker-compose部署

1、编辑docker-compose.yml

首先进入到/myhome/service/elaticsearch/,创建esv7目录(esv7代表elasticsearch 7版本) 进入esv7目录,创建docker-compose.yml文件,如下:

version: '2'

services:

es01:
  image: [docker.elastic.co/elasticsearch/elasticsearch:7.16.2](http://docker.elastic.co/elasticsearch/elasticsearch:7.16.2)
  container_name: es01
  environment:
    - node.name=es01
    - cluster.name=es-docker-cluster
    - discovery.seed_hosts=es02,es03
    - cluster.initial_master_nodes=es01,es02,es03
    - bootstrap.memory_lock=true
    - http.cors.enabled=true
    - http.cors.allow-origin=*
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"   #按需修改,过低节点容易挂
  ulimits:
    memlock:
      soft: -1
      hard: -1
  volumes:
    - ./es01/data:/usr/share/elasticsearch/data
    - ./plugins:/usr/share/elasticsearch/plugins
  ports:
    - "9200:9200"
    - "9300:9300"
  networks:
    - elastic

es02:
  image: [docker.elastic.co/elasticsearch/elasticsearch:7.16.2](http://docker.elastic.co/elasticsearch/elasticsearch:7.16.2)
  container_name: es02
  environment:
    - node.name=es02
    - cluster.name=es-docker-cluster
    - discovery.seed_hosts=es01,es03
    - cluster.initial_master_nodes=es01,es02,es03
    - bootstrap.memory_lock=true
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

  ulimits:
    memlock:
      soft: -1
      hard: -1

  volumes:
    - ./es02/data:/usr/share/elasticsearch/data
    - ./plugins:/usr/share/elasticsearch/plugins

  networks:
    - elastic

es03:

  image: [docker.elastic.co/elasticsearch/elasticsearch:7.16.2](http://docker.elastic.co/elasticsearch/elasticsearch:7.16.2)

  container_name: es03

  environment:
    - node.name=es03
    - cluster.name=es-docker-cluster
    - discovery.seed_hosts=es01,es02
    - cluster.initial_master_nodes=es01,es02,es03
    - bootstrap.memory_lock=true
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"

  ulimits:
    memlock:
      soft: -1
      hard: -1
  volumes:
    - ./es03/data:/usr/share/elasticsearch/data
    - ./plugins:/usr/share/elasticsearch/plugins

  networks:
    - elastic

kib01:

  image: [docker.elastic.co/kibana/kibana:7.16.2](http://docker.elastic.co/kibana/kibana:7.16.2)
  container_name: kib01
  ports:
    - 5601:5601
  environment:
    ELASTICSEARCH_URL: [http://es01:9200](http://es01:9200)
    ELASTICSEARCH_HOSTS: '["[http://es01:9200](http://es01:9200)","[http://es02:9200](http://es02:9200)","[http://es03:9200](http://es03:9200)"]'

  networks:
    - elastic

volumes:

data01:
  driver: local
data02:
  driver: local
data03:
  driver: local

networks:

elastic:

  driver: bridge

2、创建挂载目录

这里我们创建了三个节点的es,在docker-compose.yml中分别是es01,es02,es03,并且分别做了数据映射,所以我们需要在esv7里面创建如下几个目录:

esv7/

├── docker-compose.yml

├── es01

│   └── data

├── es02

│   └── data

├── es03

│   └── data

└── plugins

并且设置权限:

chmod -R 777 es01 es02 es03

配置ik分词插件

然后配置分词器。下载ik插件放到plugins目录,服务器可能没外网,可本地下载上传

https://github.com/medcl/elasticsearch-analysis-ik/releases下载es的对应版本

比如下载elasticsearch-analysis-ik-7.16.2.zip, 注意: ik分词器的版本需要和elasticsearch版本一致,例如这里es用的7.16.2,ik分词器也需要下载7.16.2。然后:

cd ./plugins/ && mkdir ik

解压

unzip elasticsearch-analysis-ik-7.16.2.zip -d ./ik

最终得到如下的esv7项目目录至少包含如下结构:

esv7/

├── docker-compose.yml

├── es01

│   └── data

├── es02

│   └── data

├── es03

│   └── data

└── plugins

└── ik

启动服务

执行 docker-compose up -d启动es集群服务,完成。

可能遇到错误

1、文件权限

报错如下:

AccessDeniedException[/usr/share/elasticsearch/data/nodes]

解决:

提前将挂载目录创建好,并将权限设置好:

chmod -R 777 es01 es02 es03

2、内存不足

报错如下:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决:修改配置文件:

vi /etc/sysctl.conf

在文件末尾添加一行内容:

vm.max_map_count=262144

执行以下命令立即生效:

/sbin/sysctl -p

之后重新启动即可。

三、读写数据示例

设置mapping

curl -X PUT "localhost:9200/fql_faq_test1" -H 'Content-Type: application/json' -d'

{

"settings" : {

"number_of_shards" : 1,

"number_of_replicas" : 1

},

"mappings": {

  "properties": {

    "content": {

      "type":"text",

      "analyzer": "ik_max_word",

      "search_analyzer": "ik_max_word"

    },

    "vec":{

      "type":"dense_vector",

      "dims":768

    },

    "faq_id":{

      "type":"text",

      "index": false

    },

    "fsimilar_id":{

      "type":"text",

      "index": false

    }

  }

}

}

'

标签:7.16,compose,ik,elasticsearch,es01,docker,es02,ES
From: https://www.cnblogs.com/jax-/p/17647888.html

相关文章

  • docker常用命令
    镜像基础命令:dockerversion          查看docker版本dockersearch--automated-s3nginx   按星级搜索镜像dockerpullubuntu:14.04       获取镜像dockerimages          查看镜像信息dockerinspect  ......
  • 【校招VIP】网络基础之cookie、session和storage
    考点介绍:cookie、session和localstorage是目前常用的存储机制,不管是大厂还是中小公司,都会对这个问题有比较高的考察频度,而且有一定的深度和对比分析。本期分享的网络基础之cookie、session和storage,分为试题、文章以及视频三部分。一、考点题目1、请你描述一下cookies,sessio......
  • postgresql 查询重复,多行合并
    --postgresql--替换字符串UPDATEtmpSETphone=REPLACE(phone,'myzs','');--查询替换中间4位为*SELECTCONCAT_WS('****',SUBSTR(phone,1,3),SUBSTR(phone,8))asnew_phone_numberFROMtmp;--更新手机号为中间四位为*UPDATEtmpsetnewphone=C......
  • Pytest allure中steps中添加日志
    是否在使用allure时,为了更好的定位问题,会把日志添加上去。类似如下的情行:#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:2023/7/189:12#@Author:huzq#@File:test_allure.pyimportloggingimportallureimportpytestLOG=logging.getLogger(......
  • 深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
    什么是认证和授权?如何设计一个权限认证框架?认证和授权是安全验证中的两个重要概念。认证是确认身份的过程,用于建立双方之间的信任关系。只有在认证成功的情况下,双方才可以进行后续的授权操作。授权则是在认证的基础上,确定用户或系统对资源的访问权限。在设计一个权限认证框架时,......
  • 界面组件DevExpress Reporting——增强的SQL和实体框架数据源引入
    DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStudio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。本文总结了v23.1中针对DevExpress报表和BIDashboard产品中使用的SQL和实体框架数据源引......
  • 因为celcery项目而抛出的 not enough values to unpack (expected 3, got 0)解决方案
    python=36celery=226django=266在自己刚刚接触celery需要写定时任务的时候,按照大佬写的跑一遍的时候(https://blog.csdn.net/qq_36441027/article/details/123851915),发现自己跑的时候, 就会出现这么诡异的问题。解决办法:pipinstall eventlet 再去cmd里面执行cel......
  • ChainOfResponsibilityPattern-责任链模式
    在C#中,责任链模式(ChainofResponsibilityPattern)是一种行为型设计模式,它可让多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。请求沿着一个链传递,直到有一个对象处理它为止。责任链模式有以下几个关键角色:Handler(处理器):定义处理请求的接口,并通常持有一......
  • CF1798E Multitest Generator 题解
    题意定义一个序列\(b_1,b_2,b_3,\cdots,b_m\)为\(\texttt{test}\)当且仅当\(b_1=m-1\)。定义一个序列\(b_1,b_2,b_3,\cdots,b_m\)为\(\texttt{multitest}\)当且仅当该序列可以划分为\(b_1\)段子串,且每段子串均为一个\(\texttt{test}\)。现给定一个长度......
  • CSharp在Linux上使用Tesseract-OCR
    CSharp在Linux上使用Tesseract-OCR 1主要思路在Linux环境中使用ASP.NETCore调用TesseractOCR引擎可以按照以下步骤进行操作: 1确保你已经在Linux上安装和配置了TesseractOCR引擎。2在你的ASP.NETCore项目中,使用NuGet包管理器或dotnet命令行工具将Tesseract包添加......