如何在Linux,MacOS及Windows上进行安装Elasticsearch

1,436 阅读4分钟

在今天的这篇文章中,我想介绍如何在Linux及MacOS上进行安装ElasticSearch。Elasticsearch的安装是非常直接的。在今天的这篇文章中,我们介绍如果直接从已经编译好的档案(.tar.gz)中来直接安装Elasticsearch。如果大家想对Elasticsearch有一个大概的了解,请参照我的文章“Elasticsearch简介

此软件包可在Elastic许可下免费使用。 它包含开源和免费商业功能以及付费商业功能。 开始为期30天的试用,试用所有付费商业功能。 有关弹性许可级别的信息,请参阅“订阅”页面。

可以在Download Elasticsearch页面上找到最新的稳定版Elasticsearch。 其他版本可在“历史版本”页面上找到。

注意:Elasticsearch包含来自JDK维护者(GPLv2 + CE)的捆绑版OpenJDK。 要使用您自己的Java版本,请参阅JVM版本要求。大家如果想学习如何在Ubuntu/Linux 上安装JAVA,请参阅我的文章 “如何在Ubuntu上安装Java”。Java的版本不可以低于1.7_55。从Elastic 7.0开始,我们可以不安装JAVA。安装包包含一个相匹配的JAVA版本在里面

下载并安装Linux归档文件

可以按如下方式下载和安装Elasticsearch v7.3.0的Linux归档文件:

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz.sha512
$ shasum -a 512 -c elasticsearch-7.3.0-linux-x86_64.tar.gz.sha512 
$ tar -xzf elasticsearch-7.3.0-linux-x86_64.tar.gz
$ cd elasticsearch-7.3.0/ 

在上面的第三行,比较下载的.tar.gz存档的SHA和发布的校验和,该校验和应输出elasticsearch- {version} -linux-x86_64.tar.gz:OK。这个是为了校验下载的文件是正确的。

上面的最后一行所在的目录代表$ES_HOME。在下面的表述中我们使用它来进行表述我们的安装目录。

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可代码:artifacts.elastic.co/downloads/e…

注意:由于Elasticsearch的迭代比较快,所以你可以在下载最新的版本进行安装。最新的版本可以在地址找到:www.elastic.co/downloads/e…

下载并安装MacOS的存档

可以按如下方式下载和安装Elasticsearch v7.3.0的MacOS存档:

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-darwin-x86_64.tar.gz
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-darwin-x86_64.tar.gz.sha512
$ shasum -a 512 -c elasticsearch-7.3.0-darwin-x86_64.tar.gz.sha512 
$ tar -xzf elasticsearch-7.3.0-darwin-x86_64.tar.gz
$ cd elasticsearch-7.3.0/ 

在上面的第三行,比较下载的.tar.gz存档的SHA和发布的校验和,该校验和应输出elasticsearch- {version} -linux-x86_64.tar.gz:OK。这个是为了校验下载的文件是正确的。

上面的最后一行所在的目录代表$ES_HOME。在下面的表述中我们使用它来进行表述我们的安装目录。

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可代码:artifacts.elastic.co/downloads/e…

下载并安装Windows .zip文件

从以下位置下载Elasticsearch v7.3.1的.zip存档:

artifacts.elastic.co/downloads/e…

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可证下提供的功能:

用你最喜欢的解压缩工具解压缩它。 这将创建一个名为elasticsearch-7.3.1的文件夹,我们将其称为%ES_HOME%。 在终端窗口中,cd到%ES_HOME%目录,例如:

cd c:\elasticsearch-7.3.1

从命令行运行Elasticsearch

可以从命令行启动Elasticsearch,如下所示:

.\bin\elasticsearch.bat

默认情况下,Elasticsearch在前台运行,将其日志打印到STDOUT,并可以通过按Ctrl-C来停止。

有两个重要的配置选项

  • elasticsearch.yml(文件位于安装目录下的config子目录):path.data: /data/elasticsearch

  • jvm.options:-Xms512m, 配置JVM的内存大小的

我们可以通过如下的方法在命令行中配置这两个选项:

$ ./bin/elasticsearch -E path.data=/data/elasticsearch

或者:

$ ES_JAVA_OPTS="-Xms512m" ./bin/elasticsearch

我们也可以使用如下的方法来覆盖默认的node名字为elasticsearch:

$ ./bin/elasticsearch -E node.name=ACMEES001

这个对于我们启动两个或多个不同的节点来做replica的部署测试,是非常有用的。

启用系统index的自动创建

一些商业功能会在Elasticsearch中自动创建系统索引。 默认情况下,Elasticsearch配置为允许自动创建索引,不需要其他步骤。 但是,如果在Elasticsearch中禁用了自动索引创建,则必须在elasticsearch.yml中配置action.auto_create_index,以允许商业功能创建以下索引:

action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

重要提示:

如果您使用的是Logstash或Beats,则很可能在action.auto_create_index设置中需要其他索引名称,具体值取决于您的本地配置。 如果您不确定环境的正确值,可以考虑将值设置为*,这将允许自动创建所有索引。

Docker安装

如果你想通过docker进行安装,请参照我的文档“Elastic:用Docker部署Elastic栈”。通过docker-compose的使用,我们可以一次性安装Elastic栈里的多个软件。

对于Docker的安装,你可以参照我的另外一篇文章“Elasticsearch:从零开始安装Elasticsearch并使用Python装载一个CSV并读写它”来部署你的Elasticsearch及Kibana。

从命令行运行Elasticsearch

可以从命令行启动Elasticsearch,如下所示:

./bin/elasticsearch

默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),并可以通过按Ctrl-C来停止。

注意:与Elasticsearch一起打包的所有脚本都需要一个支持数组的Bash版本,并假设Bash在/ bin / bash中可用。 因此,Bash应该直接或通过符号链接在此路径上可用。

检查Elasticsearch是否已运行

您可以通过向localhost上的端

GET /

9200发送HTTP请求来测试您的Elasticsearch节点是否正在运行:

可以使用命令行上的-q或--quiet选项禁用日志打印到stdout。

除了上面用Browser的方式来检查我们的Elasticsearch是否正确运行以外,我们还可以通过如下的命令行来运行:

curl 'http://localhost:9200/?pretty'

从上面我们可以看出来,在默认的情况下我们已经创建了一个名字叫做“elasticsearch”的集群。

对于熟悉Postman的开发者来说,我们可以很方便地使用Postman和Elasticsearch一起使用起来。它是一个很好的调试工具:

我们可以使用Postman工具在没有Kibana的情况下使用。

作为守护进程运行

要将Elasticsearch作为守护程序运行,请在命令行中指定-d,并使用-p选项将进程ID记录在文件中:

./bin/elasticsearch -d -p pid

上面的这个命令把运行的进程存放于一个叫做pid的文件之中,为了方便下面的终止。可以在$ ES_HOME / logs /目录中找到日志消息。

要关闭Elasticsearch,请终止pid文件中记录的进程ID:

$ pkill -F pid

或者使用如下的命令来终止它的运行:

$ kill `cat pid`

RPM和Debian软件包中提供的启动脚本负责为您启动和停止Elasticsearch进程。

检查日志文件以确保该过程已关闭。 您将看到文本Native controller进程已停止,停止,关闭,在文件末尾附近关闭:

$ pwd
/Users/liuxg/elastic/elasticsearch-7.3.0/logs
(base) liuxg:logs liuxg$ ls *.log
elasticsearch.log
elasticsearch_deprecation.log
elasticsearch_index_indexing_slowlog.log
elasticsearch_index_search_slowlog.log
gc.log

在上面,我看可以看到有一个叫做elasticsearch.log的文件。我们可以通过如下的命令来查看Elasticsearch的日志(在Elasticsearch的安装目录运行):

tail logs/elasticsearch.log

在命令行上配置Elasticsearch

默认情况下,Elasticsearch从$ES_HOME/config/elasticsearch.yml文件加载其配置。 配置Elasticsearch中介绍了此配置文件的格式。

也可以在命令行中使用-E语法指定可在配置文件中指定的任何设置,如下所示:

./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1

这种情况特别适合同样一个Elasticsearch的安装运行多个Elasticsearch的实例,这样我们可以轻松建立 replica。

提示:通常,应将任何群集范围的设置(如cluster.name)添加到elasticsearch.yml配置文件中,而可以在命令行上指定任何特定于节点的设置(如node.name)。

安装文件目录布局

归档分发完全是独立的。 默认情况下,所有文件和目录都包含在$ES_HOME中 - 解压缩归档时创建的目录。

这非常方便,因为您不必创建任何目录来开始使用Elasticsearch,卸载Elasticsearch就像删除$ES_HOME目录一样简单。 但是,建议更改config目录,数据目录和logs目录的默认位置,以便以后不删除重要数据。

类型 描述 默认位置 设置
home Elasticsearch主目录或$ES_HOME 通过解压缩归档创建的目录
bin 二进制脚本包括用于启动节点的elasticsearch和用于安装插件的elasticsearch-plugin $ES_HOME/bin
conf 配置文件包括elasticsearch.ym $ES_HOME/config ES_PATH_CONF
data 节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。 $ES_HOME/data path.data
logs log文件位置 $ES_HOME/logs path.logs
plugins 插件文件位置。 每个插件都将包含在一个子目录中。 $ES_HOME/plugins
repo 共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放在此处指定的任何目录的任何子目录中。 没有配置 path.repo
script 脚本文件的位置 $ES_HOME/scripts path.scripts

设置安全账户

如果我们在部署时,不希望我们的部署对所有的人开放。我们只希望对有账户的用户进行访问,那么我们可以对我们的Elastic进行设置安全。这个需要用到x-pack相关的功能。具体安装请参阅我的另外一篇文章 “Elasticsearch:设置Elastic账户安全”。

下一步

您现在已经设置了测试Elasticsearch环境。 在开始认真开发或使用Elasticsearch投入生产之前,您必须进行一些额外的设置:

我们可以接下来安装Kibana。Kibana有一个Web界面。它可以帮助我们展示及分析我们的数据。同时也可以帮我们很方便地通过用户界面的方式来把我们的数据输入到Elasticsearch里的数据库中。请参阅文章:

如果你想在云上部署一个Elastic的集群,那么你可以阅读我一下的两篇文章: