elasticsearch 6.2.4和elasticsearch-head测试环境搭建 使用docker-compose方式

一 背景说明

对于新手来说搭建一个elasticsearch的测试环境稍微费力,而且没必须要去下载那么多安装包,比如java node npm等,所以我决定做成docker-compose方式的启动,并且集成ik分词器,方便快捷,一键搞定。

二 环境需求

你电脑需要安装docker和docker-compose

三 使用步骤

1 目录结构

.
├── docker-compose-elastic.yml
└── elasticsearch.yml

elasticsearch.yml

先编写elasticsearch的配置文件,后续是需要挂载到docker容器中的

elasticsearch.yml的内容如下:

network.bind_host: 0.0.0.0
cluster.name: elastic-cluster
network.host: 0.0.0.0
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: true
discovery.type: single-node
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: false

docker-compose-elastic.yml

docker-compose-elastic.yml 这里docker-compose需要的配置文件

elasticsearch.yml的内容如下:

version: '2'
services:
elastic:
image: bachue/elasticsearch-ik:6.2.4
container_name: elastic
environment:
- TZ='Asia/Shanghai'
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
mem_limit: 1g
volumes:
- ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./data:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
elasticsearch-head:
image: wallbase/elasticsearch-head:6-alpine
container_name: elasticsearch-head
environment:
TZ: 'Asia/Shanghai'
ports:
- '9100:9100'

docker-compose配置说明

bachue/elasticsearch-ik:6.2.4 表示是带有ik分词的,不需要额外自己安装,
volumes 配置项主要是把本地文件挂载到容器中,包含配置文件和数据目录,data是数据目录,如果你只是测试,也可以不需要,但是你下次启动数据就丢失了。
wallbase/elasticsearch-head:6-alpine 从5.0之后head插件可以独立启动,我重新打包一个支持6.2.x版本的docker镜像上传的hub.docker.com中的。

四 启动

启动elasticsearch和elasticsearch-head,参数-d表示后台启动,当然你需要交互式启动可以把-d去掉,elasticsearch端口是9200,head插件的访问端口是9100
haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ docker-compose -f docker-compose-elastic.yml up -d
Creating elasticsearch-head ... done
Creating elastic ... done
haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d2cb0233af1 bachue/elasticsearch-ik:6.2.4 "/usr/local/bin/dock…" About a minute ago Exited (1) 53 seconds ago elastic
6b437ba795b3 wallbase/elasticsearch-head:6-alpine "/bin/sh -c 'node_mo…" About a minute ago Up About a minute 0.0.0.0:9100->9100/tcp elasticsearch-head

如上,es报错

查看日志

haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ docker logs 5b4f181a5cfc
[2021-07-22T23:18:48,414][INFO ][o.e.n.Node ] [] initializing ...
[2021-07-22T23:18:48,438][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Failed to create node environment
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
Caused by: java.lang.IllegalStateException: Failed to create node environment
at org.elasticsearch.node.Node.<init>(Node.java:267) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
... 6 more
Caused by: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) ~[?:?]
at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) ~[?:?]
at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384) ~[?:?]
at java.nio.file.Files.createDirectory(Files.java:674) ~[?:1.8.0_161]
at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) ~[?:1.8.0_161]
at java.nio.file.Files.createDirectories(Files.java:767) ~[?:1.8.0_161]
at org.elasticsearch.env.NodeEnvironment.<init>(NodeEnvironment.java:204) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.node.Node.<init>(Node.java:264) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.node.Node.<init>(Node.java:246) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:213) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:213) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.4.jar:6.2.4]
... 6 more
haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ ll
总用量 20
drwxrwxrwx 3 haima staff 4096 7月 23 07:18 .
drwxrwsrwx 9 root staff 4096 7月 23 06:49 ..
drwxr-xr-x 2 root root 4096 7月 23 07:18 data
-rwxrwxrwx 1 haima staff 645 7月 23 06:58 docker-compose.yml
-rwxrwxrwx 1 haima staff 225 7月 23 06:51 elasticsearch.yml

从上面可以看挂载的data目录没有权限

所以要给一下权限

root@haima-PC:/usr/local/docker/elasticsearch6.2.4# docker-compose down #移除之前的容器
Stopping elasticsearch-head ... done
Removing elasticsearch-head ... done
Removing elastic ... done
Removing network elasticsearch624_default haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ su root #切换root账号
密码: root@haima-PC:/usr/local/docker/elasticsearch6.2.4# chmod -R 777 data/ #给data目录权限
root@haima-PC:/usr/local/docker/elasticsearch6.2.4# ll
总用量 20
drwxrwxrwx 3 haima staff 4096 7月 23 07:20 .
drwxrwsrwx 9 root staff 4096 7月 23 06:49 ..
drwxrwxrwx 2 root root 4096 7月 23 07:20 data
-rwxrwxrwx 1 haima staff 645 7月 23 06:58 docker-compose.yml
-rwxrwxrwx 1 haima staff 225 7月 23 06:51 elasticsearch.yml root@haima-PC:/usr/local/docker/elasticsearch6.2.4# docker-compose up -d #启动容器
Creating network "elasticsearch624_default" with the default driver
Creating elastic ... done
Creating elasticsearch-head ... done root@haima-PC:/usr/local/docker/elasticsearch6.2.4# docker ps -a #查看结果,启动成功
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
010f6ccf0419 wallbase/elasticsearch-head:6-alpine "/bin/sh -c 'node_mo…" 5 seconds ago Up 3 seconds 0.0.0.0:9100->9100/tcp elasticsearch-head
2e29d2f5899d bachue/elasticsearch-ik:6.2.4 "/usr/local/bin/dock…" 5 seconds ago Up 2 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elastic

访问浏览器 http://localhost:9100/

安装linux 的 json格式化包

apt-get -y install jq

haima@haima-PC:/usr/local/docker/elasticsearch6.2.4$ curl "127.0.0.1:9200" | jq .
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 437 100 437 0 0 2784 0 --:--:-- --:--:-- --:--:-- 2801
{
"name": "oOs3tNG",
"cluster_name": "elastic-cluster",
"cluster_uuid": "ssHHbx0pSFKbDZ00apHwAQ",
"version": {
"number": "6.2.4",
"build_hash": "ccec39f",
"build_date": "2018-04-12T20:37:28.497551Z",
"build_snapshot": false,
"lucene_version": "7.2.1",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}

浏览器里打开

http://localhost:9100/

填入elaticsearch的地址连接:

http://localhost:9200/

效果:

参考文章:

https://blog.csdn.net/WK313753744/article/details/81316744 #docker安装参考文章

https://blog.csdn.net/s1078229131/article/details/90763811 #报错解决参考文章

https://blog.csdn.net/slsunxia/article/details/107609996

elasticsearch 6.2.4和elasticsearch-head环境搭建 使用docker-compose方式的更多相关文章

  1. centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课

    centos LAMP第一部分-环境搭建  Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...

  2. ElasticSearch(一)概念介绍及环境搭建

    一.什么是ElasticSearch: Elasticsearch (ES)是一个基于Lucene构建的开源.分布式.RESTful 接口全文搜索引擎.Elasticsearch 还是一个分布式文档数 ...

  3. Docker02 基本命令、开发环境搭建、docker安装nginx、Dockerfile、路径挂载

    1 基本命令 1.1 docker相关 centos6.5 安装docker环境 >sudo yum install -y http://mirrors.yun-idc.com/epel/6/i ...

  4. .Net Core On Liunx 环境搭建之 Docker 容器和Nginx

    上一篇文章安装了Mysql8数据库,接下开始安装Docker和Nginx 我的思路是这样的,用Docker当运行环境的虚拟机,Nginx当Http服务器用来做反向代理. 服务器环境:阿里云服务器,操作 ...

  5. Python环境搭建后,多种方式的使用进行程序的执行。

    Python环境搭建后,可以使用多种方式进行程序的执行. 第一种: 进入CMD命令提示符 输入python 进入python环境(可以使用Ctrl+C退出) 输入print("hello&q ...

  6. SSM环境搭建(接口编程方式)

    一直用ssm在开发项目,之前都是直接copy别人的项目,今天趁着项目刚刚交付,自己搭建一下ssm环境,做个记录 一.创建项目.引入jar包,因为版本不一样,就不贴出这部分的内容了.个人平时的习惯是,先 ...

  7. MySQL 环境搭建之解压方式安装

    一 .MySQL服务 安装 1.下载:  地址: http://dev.mysql.com/downloads/mysql/ 2.安装: 将下载的mysql-5.7.16-winx64压缩包解压后的整 ...

  8. 持续集成-jenkins介绍与环境搭建

    什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...

  9. Docker+Jenkins_自动化持续集成环境搭建

    前一篇文章里已经在内网环境搭建好docker 详见:https://www.cnblogs.com/befer/p/9107503.html, 现在接着搭建一个Docker+Jenkins的集成环境 ...

  10. IoT设备程序开发及编译环境搭建初体验

    引言 Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮.目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境.本文在对Mirai的源码研究的 ...

随机推荐

  1. KingbaseES中truncate和oracle中truncate区别

    truncate命令在KingbaseES中本质上区别于oracle.因为oracle中,数据文件datafile可以被表所共享,每张表被分配各自的连续的extents.而在KingbaseES中,数 ...

  2. 线段树(SegmentTree)

    对于数组应用于区间染色实现为On,而线段树是O(logn) 什么是线段树:对于一个二叉树,每一个节点存储的是一个线段或是一个区间相应的信息. 查询 更新 #pragma once #include & ...

  3. CF-937(D,E)

    CF-937 在补题-- D 分析 我们发现这些因子都是二进制形式的十进制数,n的范围是$1e5$,16的二进制是$10000$,于是可以枚举1~16,把这些因子预处理出来,对于每个n就枚举因子再作除 ...

  4. #dp or 贪心+堆#CF704B Ant Man

    题目 分析(dp) 考虑到对于一个排列单独抽出 \(1\sim i\) 可能会分成若干段,而贡献一定是固定的,不会影响之后的选择. 首先 \(a,c\) 加上 \(x\),\(b,d\) 减去 \(x ...

  5. Git 11 设置项目提交人

    前面介绍了可以给 Git 设置全局提交人,这样当前电脑所有项目提交人都会变成设置的值. 但实际开发中有时候需要给不同项目设置不同提交人. 比如工作的项目是一个提交人,自己维护的开源项目又是另一个提交人 ...

  6. django ORM 按月分组统计

    一.搭建环境,准备数据 1.1:新建项目 django-admin startproject Test 1.2:新建app python manage.py startapp app 1.3:设置 s ...

  7. 【编译原理】Antlr 入门使用

    前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助 Antlr 工具,快速生成词法和语法分析代码. 一.安装 mac 环境: 1)安装 brew install antlr 2) ...

  8. 直播预告丨Hello HarmonyOS进阶课程第二课——计算机视觉

    为了帮助初识HarmonyOS的开发者快速入门,我们曾推出Hello HarmonyOS系列一共5期课程,从最基础的配置IDE和创建Hello World开始,详细介绍HarmonyOS基础.开发环境 ...

  9. 禅道统计BUG解决时长过滤节假日和跨天问题

    之前发过禅道的各种数据统计报表,使用过程中优化了一些,反映最多的是项目bug的解决时长统计问题: 1.比如当天下班左右提交的bug,研发第二天来解决,晚上这段时间应该去掉,不应计算在内 2.节假日.周 ...

  10. CSS 样式清单整理(二)

    16.元素占满整个屏幕 heigth如果使用100%,会根据父级的高度来决定,所以使用100vh单位. .dom{ width:100%; height:100vh; } 17.CSS实现文本两端对齐 ...