ElasticSearch是什么?
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
-- 以上引用自《百度百科》
Docker是什么?
请参阅官网:https://www.docker.com/
Docker如何安装?
Windows或Mac等支持桌面的平台,直接下载桌面版安装即可
为了便于本地临时测试ElasticSearch,本文使用Docker安装ElasticSearch。
本文中的操作系统为MacOS,理论上MacOS终端的大部分功能,Windows的命令提示符或PowerShell也应该可以做到,如果操作不便捷,也可以在Docker桌面版UI中操作
由于本机操作系统中已安装Docker,本文不再演示Docker安装过程
本文为安装配置记录,步骤记录可能有遗漏
确认Docker版本
本机已安装Docker的版本为:4.11.1(非最新版本)
安装ElasticSearch
依据自己需要实际情况安装对应的版本
由于服务器上的版本为8.4.1,所以本地测试环境也安装8.4.1版本的ElasticSearch
elastic官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/8.4/docker.html
下文中,在终端中执行的命令,也是根据网址中的说明文档来操作的
首先为Elasticsearch创建单独的网络,便于后续通讯
打开终端, 执行以下语句:
docker network create elastic
其中,elastic为创建的网络名称,名称可自由指定,需要注意,下文中会使用该网络名称,所以请记下来备用
网络创建完成后,从远程仓库拉取ElasticSearch镜像
打开终端,执行以下语句:
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.4.1
其中后面的数字 8.4.1为版本号
版本号根据实际需要指定,如果对版本号不确定,可以查看上面的官网链接,官网中罗列了ElasticSearch的各个版本。
下载完成后,在终端执行以下语句,来创建容器并启动运行:
docker run --name es-node01 --net elastic -p 9200:9200 -p 9300:9300 -t docker.elastic.co/elasticsearch/elasticsearch:8.4.1
其中:
--name,指定容器名称,名称可以自由指定,命名需遵循命名规则,此处使用es-node01
--net,指定使用的网络,即前面创建的网络
-p,绑定的端口,即容器 9200 端口绑定本地的 9200 端口,后面的9300同理。9200、9300为ElasticSearch默认的端口。本地端口可以更改
-t,后面的跟的是前面拉取的镜像名称,注意路径,需要写完整路径
执行之后,终端会输出很多内容,需要留意最后面的内容,其中包含了用户名、密码,以及配置Kibana需要的token,建议复制到单独的文件中保存备用。
注意,上面的内容包含配置Kibana验证的token,30分钟内有效,如果token过期,请按照文章末尾的提示流程操作。
安装 Kibana
ElasticSearch安装完成之后,接下来安装 Kibana
参考地址:https://www.elastic.co/guide/en/kibana/8.4/docker.html
打开新的终端窗口,输入以下语句从官方仓库中拉取kibana:
docker pull docker.elastic.co/kibana/kibana:8.4.1
其中8.4.1为Kibana的版本号。
需要注意,Kibana版本号需要与前面安装的ElasticSearch一致,上面安装的ES版本为8.4.1,此处Kibana的版本也选择8.4.1
数据下载完成之后,在终端执行以下语句来创建Kibana容器并启动运行:
docker run --name kib-01 --net elastic -p 5601:5601 docker.elastic.co/kibana/kibana:8.4.1
其中:
--name:名称
--net:网络,需与ElasticSearch在同一个网络,即前面创建的elastic
-p: 指定绑定的端口,即容器的5601端号绑定本地的5601端口,本地端口可以更改,Kibana的默认端口为5601
配置完成之后,终端会输出如下内容:
配置Kibana
接下来需要配置Kibana
打开浏览器,输入上面的地址,其中code为随机码,每次安装都不同
http://0.0.0.0:5601/?code=251855
如果打不开,把0.0.0.0替换为:http://127.0.0.1:5601/?code=251855
打开后,页面需要输入token,还记得上面安装ElasticSearch后,终端输出的内容吧?
其中加粗的就是token,把token复制过来,粘贴到页面的输入区域后,点击“Configure Elastic”进行配置。
配置完成后,会自动转到登录页,此处需要输入用户名和密码来登录:
还是回到ElasticSearch安装后的信息那里,将会看到如上图所示的内容,其中用户名为:elastic,密码为下面的一串字符:
将以上内容分别输入到username、password中,点击“Log in”
登录成功后,会看到类似如下页面:
实际上ElasticSearch+Kibana到此已安装完成
如果Docker安装的桌面版,打开Docker,能看到上面通过命令拉取的镜像,及创建的容器等信息:
如果登录密码忘记,如何重置?
打开终端,输入以下语句并执行:
docker exec -it es-node01 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
其中:
es-node01: 为 ElasticSearch容器的名称,即前面创建ElasticSearch容器时指定的名称
-u后面的elastic为要重置密码的用户名
执行后会提示是否要重置:
输入:y,回车确认,会生成新的密码:
如果token过期,如果重新生成?
token的有效期为30分钟
如果token过期,或者清屏了,可以用如下命令生成新的token
操作流程:
1.打开新的终端,在终端输入并执行以下语句:
docker ps
该语句用于查看正在运行的docker实例
执行后会显示正在运行的docker实例
2.记下elasticsearch对应的 CONTAINER ID
882e2406c166
3.接下来进入 elasticsearch 的实例
在终端执行以下语句:
docker exec -it 882e2406c166 /bin/bash
其中,-it 后面跟的前面提到的 CONTAINER ID
4.进入后,执行下面提示的语句:
bin/elasticsearch-create-enrollment-token --scope kibana
用来生成新的token,使用新生成的token,继续执行后续流程
如何更改Kibana界面语言为中文
如果对于英文界面(尤其一些专有词语)操作不熟悉,可以更改Kibana界面语言为中文
操作流程如下:
1.打开终端,在终端中输入以一语句:
docker ps
该语句用于查看正在运行的docker实例,执行后会显示正在运行的docker实例,记下Kibana对应的 CONTAINER ID:b823e11bdd20
2.接下来进入 Kibana 的实例
在终端执行以下语句:
docker exec -u root -it b823e11bdd20 /bin/bash
其中,-it 后面跟的前面提到的 CONTAINER ID
3.进入后,编辑Kibana配置文件:
vim /usr/share/kibana/config/kibana.yml
是不是提示 vim命令不存在?
在终端中,执行以下命令安装vim:
apt-get update
apt-get install vim
注意:推荐的做法是使用docker 的 -v 参数来挂载本地目录
一般情况下不推荐这种对容器内文件修改的方式,此处是临时修改,以便于演示如何通过修改配置文件来配置中文界面,如果项目长期需要测试运行,不建议使用此种方式。
docker -v参数示例:
docker run --es-node01 -v xxx:xxx -d config
其中,冒号前是本地路径(需要绝对路径),冒号后是容器中的路径
安装完vim命令后,再次执行:
vim /usr/share/kibana/config/kibana.yml
光标移到文件末尾
按“I”键插入,在文件末尾添加
i18n.locale: "zh-CN"
修改完成 英文模式下 按esc退出编辑模式 后保存配置:
按esc键后,再输入::wq
退出容器后(或者关闭终端窗口即可)
4.重启kibana
打开终端,输入:
docker restart b823e11bdd20
其中:b823e11bdd20为kibana容器Id
再次登录,界面语言变成中文了