Skip to content

elasticsearch 是基于 lucene 开发的一个开源的分布式的搜索引擎,可以对海量数据提供实时的索引和检索请求。本文作为 elasticsearch 入门系列的第一篇,将会从 elasticsearch、kibana 以及中文分词插件 elasticsearch-analysis-ik 的安装、配置和基本使用开始介绍。

elasticsearch 安装配置

由于 elasticsearch 是基于 java 开发的,所以在安装 elasticsearch 之前,必须确保安装了 jdk1.8 及其以上的版本。关于 jdk 的安装这里不再赘述,可以根据自己的系统自行百度安装。关于 elasticsearch 的安装具体可以参考elasticsearch 官网,依照自己的情况选择对应的安装方式安装,这里使用的是 centos7.2 rpm 和源码安装两种方式。

rpm 方式安装

  1. 下载软件安装包,由于下载源在国外可能会耗时比较长。
shell
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm
  1. 安装软件包
shell
rpm -ivh elasticsearch-6.5.4.rpm
  1. 配置 elasticsearch
shell
network.host: 127.0.0.1
http.port: 9200

在这两项配置中 network.host 时这是 elasticsearch 的运行地址,如果需要开启远程访问需要将这个地址改为 0.0.0.0,需要注意的是一旦你配置了这个选项 elasticsearch 将由开发者模式转为生产模式。http.port 用于配置 elsaticsearch 运行的端口,如果不指定的话 elasticsearch 将会在运行时自动的选择一个合适的端口。

  1. 启动 elasticsearch
shell
sudo systemctl enable elasticsearch
sudo service elasticsearch start
  1. 查看 elasticsearch 的运行状态
shell
service elasticsearch status

如果你看到了如下的内容那么恭喜你,你的 elasticsearch 已经正常的运行了。

shell
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 的启动失败。

  1. 查看 elasticsearch 的访问状态
shell
curl http://localhost:9200

返回信息

json
{
  "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 已经可以访问了。

源码安装

  1. 下载源码包,这里选择的安装目录位于/usr/bin 下
shell
cd /usr/bin
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
  1. 解压源码包
shell
tar -axvf elasticsearch-6.5.4.tar.gz
  1. 启动 elasticsearch 服务

在软件的根目录下使用如下命令即可启动 elasticsearch

shell
./bin/elasticsearch //普通模式启动elasticsearch
./bin/elasticsearch -d //deamon模式启动elasticsearch

这里是启动信息

java
[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 创建新用户。

shell
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 已经正常运行了。

java
[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 的安装

  1. 下载 ik 插件

中文分词插件也是开源的托管于 github,你可以前往 ik release 分支下载最新代码。

  1. 安装 ik 插件

elasticsearch 的插件默认的安装位置在安装目录下的 plugins 目录中,这里的安装目录在/usr/share/elasticsearch。在安装目录下执行/usr/share/elasticsearch/bin/elasticsearch-plugin /usr/share/elasticsearch/plugins/analysis-ik 命令即可将插件挂载入 elasticsearch 中。如果你的安装目录中没有该目录,也可以手动创建该目录。

  1. 重启 elasticsearch 服务

挂载后插件并不是立即可用的你需要执行 service elasticsearch restart 重启 elasticsearch 服务以确保插件能够正常的工作。

至此中文分词插件已经安装成功,已经可以在 elasticsearch 愉快的使用中文分词服务了。

kibana 的安装

kibana 是 elasticsearch 的可视化分析以及开发工具,能够对 elasticsearch 中的数据进行数据可视化和实时分析,这里主要是使用其可视化的开发服务。

  1. 安装

和 elasticsearch 一样,安装非常的简便你可以前往 kibana 下载页根据自己的情况选择对应的安装方式进行安装。这里依旧使用 rpm 的安装方式安装,具体的安装和上边一样这里不在赘述。

  1. 配置 kibana 服务

kibana 的配置文件位于安装目录下的 config/kibana.yml 中,这里你只需要更改以下三项配置即可。

shell
server.port: 5601 //kinana运行的端口
server.host: "0.0.0.0" //绑定本机地IP地址
elasticsearch.url: "http://localhost:9200" //链接到的elasticsearch服务地址
  1. 运行服务
shell
systemctl enable kibana
service start kibana
  1. 验证服务

访问你的 kibana 服务地址这里使用的是 http://192.168.10.10:5601 如果你看到了 kbana 的页面,恭喜你 kibana 已经运行成功。

kibana界面

这里主要使用 kibana 的 dev tools 工具做学习使用,关于 kibana 的一些其他的知识我们将在后续的章节里介绍。