基于docker 安装elasticsearch + kibana + ik分词器(6.7.2版本)

时间:2022-07-24
本文章向大家介绍基于docker 安装elasticsearch + kibana + ik分词器(6.7.2版本),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本文基于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":"上海"
}

如下图,可以看到上海就不会进行拆分为两个词了。