基于docker 安装elasticsearch + kiban
本文基于Docker进行安装,如何安装docker本文就不介绍了,可以参考我之前的文章
注意要点:
es和kabana以及ik分词器建议都要同一个版本的,否则可能会出现兼容性等问题,解决比较麻烦
第一步:通过docker下载es和kabana的镜像
下载的时长大概15分钟左右,如果配置了阿里云镜像加速的话,大概几分钟就能搞定
docker pull elasticsearch:6.7.2
docker pull kibana:6.7.2
如下图,docker仓库中有es和kabana的镜像则代表下载成功了
第二步:运行容器
在运行es和kabana容器时,需要注意的是,容器与容器之间网络是独立的,不是属于在局域网内,那么kabana就无法访问到es,所以我下面在运行es容器的时候,额外开启了kabana的端口,为了就是让kabana能够连接我们的es,但是这个时候还并没有在一个网段之间,所以我们在运行kabana容器的时候,需要设置container与es容器公用同一个网段就好了
运行es
docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.7.2
如下图就代表已经成功运行了es容器
解决1:如果发现es启动到一半自动停止,有效解决办法,增加内存4G以上,和增加处理器为2即可解决
解决2:分配给ES的内存太小了(无法复现错误信息,具体报错可以自行百度)
1.进入etc目录,编辑sysctl.conf文件:
vi /etc/sysctl.conf
2.添加配置:
vm.max_map_count=262144
3.执行:
sysctl -p
4.然后重启虚拟机
5.启动es如果还是失败,修改limits.conf:
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
6.重启虚拟机
如下图,则代表启动es成功
第三步:启动kibana
运行kabana
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:elasticsearch kibana:6.7.2
网页打开kibana
网页是英文的,对于英文不好的同学非常不友好,还是在6.7以上版本kibana开始支持中文了,当然我们需要自己设置
#进入容器
docker exec -it e191c83da1b2 /bin/bash
#修改配置
vi /usr/share/kibana/config/kibana.yml
#添加中文配置
i18n.locale: zh-CN 注意冒号后边有个空格
#退出容器
exit
#重启kibana即可
可以看到有部分已经被汉化了哦
第四步:安装ik分词器
es里面有默认的分词器,但是并不友好,比如我搜索上海,他会默认拆分成两个词语进行查询,本来上海就是一个词语
如下图:
192.168.137.6:9200/_analyze
{
"analyzer":"standard",
"text":"上海"
}
现在我们来安装ik分词器
注意:ik分词器的版本与es的版本一定要一致
分词器下载地址
https://github.com/medcl/elasticsearch-analysis-ik/releases
下载源码包,并解压
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.7.2/elasticsearch-analysis-ik-6.7.2.zip
创建目录
mkdir elasticsearch-analysis-ik-6.7.2
解压到指定目录
unzip elasticsearch-analysis-ik-6.7.2.zip -d elasticsearch-analysis-ik-6.7.2
查看ik官方分词库所有词,我们也可以在里面自定义词
cat elasticsearch-analysis-ik-6.7.2/config/extra_main.dic
接下来我们将ik分词器上传到es容器中
docker exec -it 370228c5af65 bash
进入我们es的插件目录中,查看是否有ik分词器,有的话看版本是否对应,不对应删掉重新上传即可
cd /usr/share/elasticsearch/plugins/
如下图,我这里是没有的
接着退出容器,将ik分词器复制到es容器里面
意思: 复制 服务器的ik文件(要绝对地址,通过pwd显示) 到 指定容器下 某个目录下
docker cp /usr/local/software/elasticsearch-analysis-ik-6.7.2 91eb1e7498fa:/usr/share/elasticsearch/plugins/elasticsearch-analysis-ik-6.7.2
copy完了后,进入容器到目录到我们copy的目录下,就可以看到相应的文件了,到此我们的ik分词器就已经安装完毕
现在开始准备测试一下我们的ik分词器的效果
1.首先退出容器,重启es容器
2.请求接口,类型使用ik分词器即可
192.168.137.7:9200/_analyze
{
"analyzer":"ik_smart",
"text":"上海"
}
如下图,可以看到上海就不会进行拆分为两个词了。