一.编写Dockerfile文件构建Es容器
首先需要通过dockerfile文件创建Es容器,需要有Es的包,去官网上下载对应的包下来,我这里下载的是elasticsearch-7.17.0-linux-x86_64.tar.gz
注:Kibana和Ik分词器版本需要与这里的Es版本一致,不然会出错!!
下载包上传云服务器,开始编写DockerFile文件,如下图:
这里有几个地方需要注意:
1.Es里自带Jdk,所以无需再自己安装一个Jdk在环境中,如果需要自定义jdk,需要更改Es /config/ 目录下的elasticSearch-env文件,将里面配置修改成自定义的Jdk路径
2.需要创建linux自己的用户组,因为es不能在root用户下启动,且要对整个elasticsearch-7.17.0目录授权
3.需要暴露两个端口,一个是集群内布通信端口9300,一个是外部访问端口9200
4.数据卷映射,可以将实例内部的数据映射到宿主机上进行保存(非必要)
5.如果需要转成Es集群,可以在启动的实例里更改 /config/elasticsearch.yml文件进行修改
之后就可以通过docker build xxx 把容器创建出来,容器创建出来之后
构建实例命令
docker run -itd -p 9200:9200 -e "ES_JAVA_OPTS=-Xms108m -Xmx108m" -e "discovery.type=single-node" --net="host" --name myes_test myes:1.0
这里也需要注意几个地方:
1.首先暴露端口由于我只需要外部访问且为单机环境,所以就向外暴露一个端口
2.-e 设置启动的JVM大小,因为 Xms 属性和 Xmx 属性太小,es启动会出现内存不足的问题
3.-e 设置discovery.type=single-node,设置成为单机环境
4. -net="host" 目的为与宿主机同ip,如果不添加此属性会出现宿主机访问实例出现connection reset by peer的问题(推测是由于防火墙等因素导致)
启动之后,curl 127.0.0.1:9200 访问
测试成功。
二.安装Ik分词器
ik分词器的安装较为简单,只需要去github上下载与es对应的ik分词器版本就行,然后在容器内es的 /plugins/ 目录下创建一个ik文件夹,然后把ik.zip包解压的东西放入这个文件夹里就完成
使用 docker cp 宿主机文件路径 实例Id:实例内es /plugins/ 下文件路径
三.安装KiBana
安装Kibana使用已经打包好的容器进行安装
docker pull kibana:7.17.0
然后使用命令
docker run -d --name kibana --net="host" -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9200 kibana:7.17.0
将Kibana容器变成实例,访问es的url对es进行操作
且设置为跟host主机一个网段
测试KiBana:
在Kibana导航栏,找到Dev tools就可以操作容器内的es了
Put 索引名
Delete 索引名
简单的一些操作
1.创建索引
2.创建type以及字段属性
3.删除索引
4.向shop类型中放入数据两条
5.获取数据,从索引和Type中指明是在这两个条件下去查询数据
6.查询全部的数据
可以理解为索引像个字典名字,Type类型为哪种类型下,然后字段为关键字,通过关键字找到对应的页数查出数据(个人理解,欢迎指正)