elasticsearch 是基于 lucene 开发的一个开源的分布式的搜索引擎,可以对海量数据提供实时的索引和检索请求。本文作为 elasticsearch 入门系列的第一篇,将会从 elasticsearch、kibana 以及中文分词插件 elasticsearch-analysis-ik 的安装、配置和基本使用开始介绍。
elasticsearch 安装配置
由于 elasticsearch 是基于 java 开发的,所以在安装 elasticsearch 之前,必须确保安装了 jdk1.8 及其以上的版本。关于 jdk 的安装这里不再赘述,可以根据自己的系统自行百度安装。关于 elasticsearch 的安装具体可以参考elasticsearch 官网,依照自己的情况选择对应的安装方式安装,这里使用的是 centos7.2 rpm 和源码安装两种方式。
rpm 方式安装
- 下载软件安装包,由于下载源在国外可能会耗时比较长。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm
- 安装软件包
rpm -ivh elasticsearch-6.5.4.rpm
- 配置 elasticsearch
network.host: 127.0.0.1
http.port: 9200
在这两项配置中 network.host 时这是 elasticsearch 的运行地址,如果需要开启远程访问需要将这个地址改为 0.0.0.0,需要注意的是一旦你配置了这个选项 elasticsearch 将由开发者模式转为生产模式。http.port 用于配置 elsaticsearch 运行的端口,如果不指定的话 elasticsearch 将会在运行时自动的选择一个合适的端口。
- 启动 elasticsearch
sudo systemctl enable elasticsearch
sudo service elasticsearch start
- 查看 elasticsearch 的运行状态
service elasticsearch status
如果你看到了如下的内容那么恭喜你,你的 elasticsearch 已经正常的运行了。
elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2018-12-20 21:27:03 CST; 3s ago
Docs: http://www.elastic.co
Main PID: 25290 (java)
CGroup: /system.slice/elasticsearch.service
├─25290 /bin/java -Xms256m -Xmx256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -X...
└─25338 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
在一些内存较低的机器上你可能看到的 Active 的状态为 failed,这是你需要编辑/etc/elasticsearch/jvm.options 修改-Xms1g 和-Xmx1g 两个配置选项,因为默认的 elasticsearch 的运行至少需要 1g 的内存,当你的机器不足以提供 1g 的运行内存时,会导致 elasticsearch 的启动失败。
- 查看 elasticsearch 的访问状态
curl http://localhost:9200
返回信息
{
"name": "hM6I62X",
"cluster_name": "elasticsearch",
"cluster_uuid": "0sJlBssMQI6JJPaQueV5Ug",
"version": {
"number": "6.5.2",
"build_flavor": "default",
"build_type": "rpm",
"build_hash": "9434bed",
"build_date": "2018-11-29T23:58:20.891072Z",
"build_snapshot": false,
"lucene_version": "7.5.0",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}
如果你看到了如上的信息那么恭喜你你的 elasticsearch 已经可以访问了。
源码安装
- 下载源码包,这里选择的安装目录位于/usr/bin 下
cd /usr/bin
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
- 解压源码包
tar -axvf elasticsearch-6.5.4.tar.gz
- 启动 elasticsearch 服务
在软件的根目录下使用如下命令即可启动 elasticsearch
./bin/elasticsearch //普通模式启动elasticsearch
./bin/elasticsearch -d //deamon模式启动elasticsearch
这里是启动信息
[o.e.b.ElasticsearchUncaughtExceptionHandler] [unknown] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:140) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:127) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:86) ~[elasticsearch-6.5.4.jar:6.5.4]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.5.4.jar:6.5.4]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:136) ~[elasticsearch-6.5.4.jar:6.5.4]
... 6 more
如你所见启动失败了,原因是 elasticsearch 不能使用 root 用户启动,为了启动 elasticsearch 我们需要为 elasticsearch 创建新用户。
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
chmod -R elasticsearch:elasticsearch elasticsearch-6.5.4
另外需要注意的是如果安装目录在 root 目录下可能会遇见权限不足无法启动 elasticsearch 的情况。低内存机器启动时也需要更改 jvm.options 和 elasticsearch.yml 文件的配置,不同于 rpm 的安装方式,这种安装方式配置文件位于 elasticsearch 根目录下的 config 文件夹下。
再次启动 elasticsearch,如果你已经看到了类似的启动加载信息,那么说明 elasticsearch 已经正常运行了。
[INFO ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [5-6FrI_] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[INFO ][o.e.n.Node ] [5-6FrI_] started
[WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [5-6FrI_] Failed to clear cache for realms [[]]
[INFO ][o.e.l.LicenseService ] [5-6FrI_] license [2af88cf1-9b0b-49d3-bb15-21786833f4ad] mode [basic] - valid
[INFO ][o.e.g.GatewayService ] [5-6FrI_] recovered [0] indices into cluster_state
中文分词插件 elasticsearch-analysis-ik 的安装
- 下载 ik 插件
中文分词插件也是开源的托管于 github,你可以前往 ik release 分支下载最新代码。
- 安装 ik 插件
elasticsearch 的插件默认的安装位置在安装目录下的 plugins 目录中,这里的安装目录在/usr/share/elasticsearch。在安装目录下执行/usr/share/elasticsearch/bin/elasticsearch-plugin /usr/share/elasticsearch/plugins/analysis-ik 命令即可将插件挂载入 elasticsearch 中。如果你的安装目录中没有该目录,也可以手动创建该目录。
- 重启 elasticsearch 服务
挂载后插件并不是立即可用的你需要执行 service elasticsearch restart 重启 elasticsearch 服务以确保插件能够正常的工作。
至此中文分词插件已经安装成功,已经可以在 elasticsearch 愉快的使用中文分词服务了。
kibana 的安装
kibana 是 elasticsearch 的可视化分析以及开发工具,能够对 elasticsearch 中的数据进行数据可视化和实时分析,这里主要是使用其可视化的开发服务。
- 安装
和 elasticsearch 一样,安装非常的简便你可以前往 kibana 下载页根据自己的情况选择对应的安装方式进行安装。这里依旧使用 rpm 的安装方式安装,具体的安装和上边一样这里不在赘述。
- 配置 kibana 服务
kibana 的配置文件位于安装目录下的 config/kibana.yml 中,这里你只需要更改以下三项配置即可。
server.port: 5601 //kinana运行的端口
server.host: "0.0.0.0" //绑定本机地IP地址
elasticsearch.url: "http://localhost:9200" //链接到的elasticsearch服务地址
- 运行服务
systemctl enable kibana
service start kibana
- 验证服务
访问你的 kibana 服务地址这里使用的是 http://192.168.10.10:5601 如果你看到了 kbana 的页面,恭喜你 kibana 已经运行成功。
这里主要使用 kibana 的 dev tools 工具做学习使用,关于 kibana 的一些其他的知识我们将在后续的章节里介绍。