关于版本
在决定使用 Elasticsearch 的时候首先要考虑的是版本问题,Elasticsearch (排除 0.x 和 1.x)目前有如下常用的稳定的主版本:2.x,5.x,6.x,7.x(current)。
你可能会发现没有 3.x 和 4.x,ES 从 2.4.6 直接跳到了 5.0.0。其实是为了 ELK(ElasticSearch,Logstash,Kibana)技术栈的版本统一,免的给用户带来混乱。
在 Elasticsearch 是 2.x (2.x 的最后一版 2.4.6 的发布时间是 July 25, 2017) 的情况下,Kibana 已经是 4.x(Kibana 4.6.5 的发布时间是 July 25, 2017)。
那么在 Kibana 的下一主版本肯定是 5.x 了,所以 Elasticsearch 直接将自己的主版本发布为 5.0.0 了。
统一之后,我们选版本就不会犹豫困惑了,我们选定 Elasticsearch 的版本后再选择相同版本的 Kibana 就行了,不用担忧版本不兼容的问题。
Elasticsearch 是使用 Java 构建,所以除了注意 ELK 技术的版本统一,我们在选择 Elasticsearch 的版本的时候还需要注意 JDK 的版本。
因为每个大版本所依赖的 JDK 版本也不同,目前 7.2 版本已经可以支持 JDK11。
由于本人手头上的资料是5.X版本的,所以在学习过程中将会以5.X为主,学习完后,将会把一些文章内容升级为6.X和7.X版本
Elasticsearch 是基于 Java 运行时平台,所以需要安装 JDK 8
以上版本环境,在使用es之前,需要先安装JDK并配置环境变量JAVA_HOME。
本文选用的ES版本是5.6.x,下载地址如下:
artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.16.zip
安装包里面的目录结果下图所示:
bin
目录下面存放是一系列可执行程序
elasticsearch
,Elasticsearch 的启动进程,Elasticsearch 程序的主入口。elasticsearch-env
,用于环境变量的配置,可以在这里修改相关的环境配置,大部分情况不建议直接修改此配置文件,可以通过在外部通过变量名来进行设置。elasticsearch-translog
,主要用于对 Translog 进行清理操作。elasticsearch-keystore
,主要用于管理 Elasticsearch 的密钥。elasticsearch-plugin
,插件安装工具。elasticsearch-service*
开头的几个程序是为 Windows 平台提供的服务管理工具
config 目录,主要是存放一下配置文件信息
elasticsearch.yml
,Elasticsearch 的配置文件,使用 Yaml 文件格式作为标准。jvm.options
,Java 虚拟机运行环境的相关参数配置。log4j2.properties
,日志文件相关的配置。
lib
目录是 Elasticsearch 依赖的 Jar 包和自己的 Java 本身程序所在的地方。
data
目录,数据默认存放的位置。
logs
目录,日志默认存放的位置。
modules
目录,存放 Elasticsearch 的内部功能模块。
plugins
目录,存放 Elasticsearch 的外部扩展插件。
我们通过bin目录下的 elasticsearch.bat 脚本启动服务。
控制台会输出了若干启动信息,可以看到有启动程序的环境变量,加载的模块和插件名称清单,当前监听了 9200
和 9300
端口。9200 端口是 Elasticsearch 默认监听的 RESTful 端口,可以通过它查看一些信息。
访问 http://localhost:9200 地址,可以看到包含当前节点、集群、版本等信息
{
name: "iy6LwI6",
cluster_name: "elasticsearch",
cluster_uuid: "Xd8hWkX-RI-4brkrOlHO_g",
version: {
number: "5.6.16",
build_hash: "3a740d1",
build_date: "2019-03-13T15:33:36.565Z",
build_snapshot: false,
lucene_version: "6.6.1"
},
tagline: "You Know, for Search"
}
默认情况下,Elastic 只允许本机访问,如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml
文件,去掉network.host
的注释,将它的值改成0.0.0.0
,然后重新启动 ES。
network.host: 0.0.0.0
设成0.0.0.0
让任何人都可以访问。线上服务不要这样设置,要设成具体的 IP