本部分将告诉我们安装、运行ElasticSearch的详细信息,包括:
可从本章了解到Elastic官方支持的运行环境,包括操作系统和JVM虚拟机。Elasticsearch已在本章列出的平台上进行过测试,但我们不排除在其他平台上也可能正常运行。
Elasticsearch是用Java开发的,并在每个发行版中包含来自JDK维护者(GPLv2 + ce)捆绑版本的OpenJDK。我们建议采用捆绑的JVM,位于Elasticsearch主目录的jdk目录中。
如果您要使用自己的Java版本,请设置JAVA_HOME环境变量。如果您必须使用与捆绑JVM不同的Java版本,我们建议您使用受支持的Java LTS版本。如果使用了已知错误的Java版本,Elasticsearch将拒绝启动。在使用您自己的JVM时,可能会删除捆绑JVM的目录。
您可以在自己的计算机上运行Elasticsearch,也可以在 Elastic Cloud上使用我们的托管 Elasticsearch Service。您也可以再在AWS和GCP上用Elasticsearch服务,免费试用。
Elasticsearch提供以下包格式提供:
操作系统 | 下载安装链接 |
---|---|
Linux、MacOS 的 tar.gz 包 | 在任何Linux发行版和macOS上安装 tar.gz 归档包。 |
Windows 的 .zip 包 | zip 包用于 Windows 下安装 |
Deb | Deb包适合于Debian、Ubuntu和其他基于Debian的系统。Debian软件包可以从Elasticsearch网站或我们的Debian仓库下载。 |
RPM | RPM包适合安装在Red Hat、CentOS、SLES、OpenSUSE和其他支持RPM的系统上。RPM可以从Elasticsearch网站或我们的RPM仓库下载。 |
MSI | [beta] MSI 安装包适用于在安装了 .NET 4.5 Framework 以上版本的Windows 64位系统上安装,是Windows上使用Elasticsearch的最简单选择。可从Elasticsearch网站下载MSI。 |
docker | 可用于Docker容器运行Elasticsearch镜像。它们可以从 Elastic Docker Registry下载。 |
brew | 使用MacOS自带的Homebrew 包管理工具安装 |
我们还提供了以下配置管理工具来帮助进行大型部署:
工具 | 项目git地址 |
---|---|
Puppet | puppet-elasticsearch |
Chef | cookbook-elasticsearch |
Ansible | ansible-elasticsearch |
Linux和macOS平台下用 .tar.gz 归档包来安装 Elasticsearch。
此软件包在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/subscriptions 查看有关 Elastic 许可证级别的信息。
Elasticsearch的最新稳定版本在 Download Elasticsearch 页面中有下载。其他版本可在 Past Releases page 页面中找到。
Elasticsearch包括来自JDK维护者(GPLv2 + ce)的OpenJDK捆绑版本。如果您要使用自己的Java版本,请参考本章开头部分。
Elasticsearch v7.8.0版本的 Linux 归档包下载和安装如下:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.8.0-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.8.0-linux-x86_64.tar.gz
cd elasticsearch-7.8.0/
比较下载的 .tar.gz 归档包的SHA和发布的校验和,输出应该是: elasticsearch- {version} -linux-x86_64.tar.gz: OK。
或者,您可以下载仅包含 Apache 2.0 代码许可的安装包:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.8.0-linux-x86_64.tar.gz
Linux和macOS平台下用 .tar.gz 归档包来安装 Elasticsearch。
Elasticsearch v7.8.0版本的 MacOS 归档包下载和安装如下:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-darwin-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-darwin-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.8.0-darwin-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.8.0-darwin-x86_64.tar.gz
cd elasticsearch-7.8.0/
比较下载的 .tar.gz 归档包的SHA和发布的校验和,输出应该是: elasticsearch-{version}-darwin-x86_64.tar.gz: OK。
或者,您可以下载仅包含 Apache 2.0 代码许可的安装包:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.8.0-darwin-x86_64.tar.gz
一些商业特性允许自动在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 设置中很可能需要其他索引名称,并且确切的值将取决于您的本地配置。如果您不确定环境的正确值,则可以考虑将该值设置为*,这将允许自动创建所有索引。
Elasticsearch可以从命令行启动,如下所示:
./bin/elasticsearch
如果您给 Elasticsearch 密钥库设置了密码,系统会提示您输入密码。有关详细信息,请参阅安全设置。
默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),按 Ctrl-C 可停止运行。
您可以向本地主机上的9200端口发送http请求来测试Elasticsearch节点是否正在运行:
GET /
返回如下:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
可以使用命令行上的 -q 或 --quiet 选项禁用将日志打印到stdout。
将Elasticsearch作为守护程序运行,请在命令行中指定 -d 选项,并使用 -p 记录进程 ID 到文件中:
./bin/elasticsearch -d -p pid
如果您给 Elasticsearch 密钥库设置了密码,系统会提示您输入密码。有关详细信息,请参阅安全设置。
日志消息在 $ES_HOME/logs/ 目录下。
可以杀掉PID文件中记录的进程ID来关闭 Elasticsearch:
pkill -F pid
RPM 和 Debian包中提供了启动脚本,用于启动和停止Elasticsearch进程。
默认情况下,Elasticsearch从 $ES_HOME/config/elasticsearch.yml 文件加载其配置。该配置文件的格式在 Configuring Elasticsearch 中进行了说明。
配置文件中的任何设置也可以在命令行上使用 -E 语法指定,如下所示:
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1
通常,所有集群通用的设置(如cluster.name)都应添加到 elasticsearch.yml 配置文件中,而任何节点特定的设置(如node.name)都可以在命令行中指定。
默认情况下,所有文件和目录都包含在 $ES_HOME 中,该目录是在解压归档文件时创建的。这样非常方便,您不必创建任何目录就可以开始使用Elasticsearch,卸载Elasticsearch也仅仅就是删除 $ES_HOME 目录。但是,建议更改默认的配置目录、数据目录和日志目录,以防后面不小心删除了重要数据。
目录 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch home 目录或 $ES_HOME | 通过解压缩归档文件创建的目录 | |
bin | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | $ES_HOME/bin | |
conf | 配置文件,包括 elasticsearch.yml | $ES_HOME/config | ES_PATH_CONF |
data | 在节点上分配的每个索引 / 分片的数据文件的位置。可以容纳多个位置。 | $ES_HOME/data | path.data |
logs | 日志文件位置 | $ES_HOME/logs | path.logs |
plugins | 插件文件位置。每个插件都将包含在子目录中。 | $ES_HOME/plugins | |
repo | 共享文件系统仓库位置。可以容纳多个位置。文件系统仓库可以放置在此处指定的任何目录的任何子目录中。 | 未设置 | path.repo |
可以使用 windows .zip 归档包在Windows上安装Elasticsearch。装完之后执行 elasticsearch-service.bat 命令来启动 Elaticsearch 服务。
在过去Windows上的Elaticsearch一直用 .zip 包来安装的,现在可以用 MSI 安装包来为Windows用户提供最简单的入门体验,如果您愿意的话,还是可以继续用 .zip 包来安装。
此软件包在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/cn/subscriptions 查看有关 Elastic 许可证级别的信息。
在Windows上,Elasticsearch机器学习功能需要Microsoft Universal C运行时库,Windows 10、Windows Server 2016和Windows的最新版本会内置该运行时库。对于较旧版本的Windows,可以通过Windows Update安装,也可以单独下载安装。如果无法安装Microsoft Universal C运行时库,则在禁用机器学习功能的情况下,仍可以使用Elasticsearch的其余功能。
Elasticsearch的最新稳定版本在 Download Elasticsearch 页面有下载。其他版本可在 Past Releases page 页面中找到。
Elasticsearch包括来自JDK维护者(GPLv2 + ce)的OpenJDK捆绑版本。如果您要使用自己的Java版本,请参考本章开头部分。
Elasticsearch v7.8.1版本 .zip 包下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-windows-x86_64.zip
或者,您可以下载仅包含Apache 2.0许可证下可用的功能的包:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.8.1-windows-x86_64.zip
用你最喜欢的解压缩工具解压缩。这将创建一个名为 elasticsearch-7.8.1 的文件夹,我们将其称为 %ES_HOME% 。在终端窗口进入 %ES_HOME% 目录:
cd c:\elasticsearch-7.8.1
一些商业特性允许自动在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 设置中很可能需要其他索引名称,并且确切的值将取决于您的本地配置。如果您不确定环境的正确值,则可以考虑将该值设置为*,这将允许自动创建所有索引。
Elasticsearch可以从命令行启动,如下所示:
.\bin\elasticsearch.bat
如果您给 Elasticsearch 密钥库设置了密码,系统会提示您输入密码。有关详细信息,请参阅安全设置。
默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),按 Ctrl-C 可停止运行。
默认情况下,Elasticsearch从 %ES_HOME%\config\elasticsearch.yml 文件加载其配置,该配置文件的格式在 Configuring Elasticsearch 中进行了说明。
配置文件中的任何设置也可以在命令行上使用 -E 语法指定,如下所示:
.\bin\elasticsearch.bat -Ecluster.name=my_cluster -Enode.name=node_1
包含空格的值必须用引号括起来。例如 -Epath.logs=“C:\My Logs\logs”.。
通常,所有集群通用的设置(如cluster.name)都应添加到 elasticsearch.yml 配置文件中,而任何节点特定的设置(如node.name)都可以在命令行中指定。
您可以向本地主机上的9200端口发送http请求来测试Elasticsearch节点是否正在运行:
GET /
返回如下:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.8.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
Elasticsearch 可以作为一项服务安装,以便在后台运行或在引导时自动启动,无需用户参与。这可以通过 bin\ 文件夹中的 elasticsearch-service.bat 脚本实现,该脚本允许用户通过命令行安装、删除、管理或配置服务,也可以启动和停止服务。
c:\elasticsearch-7.8.1\bin>elasticsearch-service.bat
Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
该脚本需要一个参数(要执行的命令),后跟一个指示服务ID的可选参数(在安装多个Elasticsearch服务时很有用)。
可用的命令有:
命令 | 用途 |
---|---|
install | 安装Elasticsearch用作服务 |
remove | 删除已安装的Elasticsearch服务(如果已启动,则停止该服务) |
start | 启动Elasticsearch服务(如果已安装) |
stop | 停止Elasticsearch服务(如果已启动) |
manager | 启动GUI以管理已安装的服务 |
在安装过程中,服务的名称和 JAVA_HOME 的值将变得可用:
c:\elasticsearch-7.8.1\bin>elasticsearch-service.bat install
Installing service : "elasticsearch-service-x64"
Using JAVA_HOME (64-bit): "c:\jvm\jdk1.8"
The service 'elasticsearch-service-x64' has been installed.
虽然JRE可以用于Elasticsearch服务,但是由于使用了客户端VM(而不是为长时间运行的应用程序提供更好性能的服务器JVM),因此不鼓励使用JRE,并会发出警告。
应该将系统环境变量 JAVA_HOME 设置为希望Elasticsearch依赖的JDK安装路径。如果升级JDK,不需要重新安装Elasticsearch服务,但必须将系统环境变量JAVA_HOME的值设置为新的JDK安装路径,然而,不支持跨JVM类型(例如,JRE与SE)升级,这种情况下必须重新安装Elasticsearch服务。
在安装之前,可以通过设置以下环境变量(使用命令行中的set命令,或通过Window界面:系统属性 -> 环境变量)来配置Elasticsearch服务。
环境变量 | 用途 |
---|---|
SERVICE_ID | 服务的唯一ID。在同一台计算机上安装多个实例时很有用。默认是 elasticsearch-service-x64。 |
SERVICE_USERNAME | 用哪个账户身份运行,默认为本地系统帐户。 |
SERVICE_PASSWORD | 在 %SERVICE_USERNAME% 中指定的用户的密码。 |
SERVICE_DISPLAY_NAME | 服务的名称。默认设置为 Elasticsearch |
SERVICE_DESCRIPTION | 服务的说明。默认设置为 Elasticsearch Windows Service - https://elastic.co。 |
JAVA_HOME | 服务运行所依赖的JVM安装目录。 |
SERVICE_LOG_DIR | 服务日志目录,默认为 %ES_HOME%\logs 。请注意,这并不控制 elasticsearch 日志的路径;它的路径是通过 elasticsearch.yml 文件中或命令行上的 path.logs 配置的。 |
ES_PATH_CONF | 配置文件目录(包括 elasticsearch.yml、jvm.options 和 log4j2.properties 文件),默认为 %ES_HOME%\config 。 |
ES_JAVA_OPTS | 其他可能要用到的任何 JVM 系统属性。 |
ES_START_TYPE | 服务的启动模式。可以是 “自动” 或 “手动”(默认)。 |
ES_STOP_TIMEOUT | procrun等待服务优雅退出的超时(秒),默认为0。 |
elasticsearch-service.bat 的核心是依靠Apache Commons Daemon项目来安装服务,在服务安装之前设置的环境变量将被复制到整个服务生命周期中使用。这意味着除非重新安装服务,否则在安装后对它们所做的任何变更都不会生效。
在 Windows 上,当从命令行运行 elasticsearch 或首次将 elasticsearch 作为服务安装时,可以像其他任何Elasticsearch安装一样配置堆大小。要调整已安装服务的堆大小,请使用服务管理器: bin\elasticsearch-service.bat manager 。
当 elasticsearch 运行时,该服务会自动配置专用临时目录以供其使用。该目录被配置为运行安装的用户的专用临时目录的子目录。如果服务将在其他用户下运行,则可以在执行服务安装之前,通过将环境变量ES_TMPDIR设为首选项,来配置服务使用的临时目录的位置。
您还可以在安装服务后使用管理界面(elasticsearch-service-mgr.exe)对其进行配置,该gui提供了对已安装服务的深入了解,包括其状态、启动类型、jvm、启动和停止设置等。只需从命令行调用elasticsearch-service.bat manager即可打开manager窗口:
大多数通过管理界面进行的更改(如 JVM 设置)都需要重新启动服务才能生效。
zip包内容完全独立,无需任何其他依赖,默认情况下,所有文件和目录都包含在 %ES_HOME% 中,该目录是在解压归档文件时创建的。这样非常方便,您不必创建任何目录就可以开始使用Elasticsearch,卸载Elasticsearch也仅仅就是删除 %ES_HOME% 目录。但是,建议更改默认的配置目录、数据目录和日志目录,以防后面不小心删除了重要数据。
目录 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch home 目录或 %ES_HOME% | 通过解压缩归档文件创建的目录 | |
bin | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | %ES_HOME%\bin | |
conf | 配置文件,包括 elasticsearch.yml | %ES_HOME%\config | ES_PATH_CONF |
data | 在节点上分配的每个索引 / 分片的数据文件的位置。可以容纳多个位置。 | %ES_HOME%\data | path.data |
logs | 日志文件位置 | %ES_HOME%\logs | path.logs |
plugins | 插件文件位置。每个插件都将包含在子目录中。 | %ES_HOME%\plugins | |
repo | 共享文件系统仓库位置。可以容纳多个位置。文件系统仓库可以放置在此处指定的任何目录的任何子目录中。 | 未设置 | path.repo |
Elasticsearch的debian包可以从我们的网站或APT仓库下载。它可以用来在任何基于Debian的系统(如Debian和Ubuntu)上安装elasticsearch。
此软件包在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/subscriptions 查看有关 Elastic 许可证级别的信息。
Elasticsearch的最新稳定版本在 Download Elasticsearch 页面中有下载。其他版本可在 Past Releases page 页面中找到。
Elasticsearch包括来自JDK维护者(GPLv2 + ce)的OpenJDK捆绑版本。如果您要使用自己的Java版本,请参考本章开头部分。
我们使用Elasticsearch签名密钥(PGP密钥 D88E42B4 ,可从 https://pgp.mit.edu 获得)对所有安装包进行签名,并使用指纹:
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装签名公钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
在继续之前,您可能需要在debian上安装 apt-transport-https 包:
sudo apt-get install apt-transport-https
将仓库定义保存到 /etc/apt/sources.list.d/elastic-7.x.list:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
这些操作不使用 add-apt-repository ,原因如下:
1、add-apt-repository 将条目添加到系统的 /etc/apt/sources.list 文件中,要比在 /etc/apt/sources.list.d 目录添加每个仓库文件要好。
2、在许多发行版中,add-apt-repository 不是默认安装的一部分,并且需要许多非默认依赖项。
3、旧版本的 add-apt-repository 总是添加一个 deb-src 条目,这将导致错误,因为我们没有提供源包。如果添加了 deb-src 条目,则在删除 deb-src 行之前,您将看到如下错误:
Unable to find expected entry ‘main/source/Sources’ in Release file
(Wrong sources.list entry or malformed file)
您可以通过以下方式安装Elasticsearch Debian软件包:
sudo apt-get update && sudo apt-get install elasticsearch
如果同一个Elasticsearch仓库存在两个条目,则在apt-get更新过程中将看到如下错误:
Duplicate sources.list entry https://artifacts.elastic.co/packages/7.x/apt/ …
检查 /etc/apt/sources.list.d/elasticsearch-7.x.list 中的重复条目,或在 /etc/apt/sources.list.d/ 目录和 /etc/apt/sources.list 文件中找到重复条目。
在基于 systemd 发行版中,安装脚本会尝试设置内核参数(例如 vm.max_map_count),您可以通过屏蔽 systemd-sysctl.service 部件来跳过此操作。
Elastic 还提供了一个替代软件包,该软件包仅包含apache 2.0许可证下可用的功能。要安装它,请使用以下源列表:
echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Elasticsearch v7.8.1的debian软件包可从网站下载并按如下方式安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-amd64.deb.sha512
shasum -a 512 -c elasticsearch-7.8.1-amd64.deb.sha512
sudo dpkg -i elasticsearch-7.8.1-amd64.deb
比较下载的 Debian 包的SHA和发布的校验和,输出应该是: elasticsearch-{version}-amd64.deb: OK。
或者,您可以下载仅包含 Apache 2.0 代码许可的安装包:
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.8.1-amd64.deb
一些商业特性允许自动在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 设置中很可能需要其他索引名称,并且确切的值将取决于您的本地配置。如果您不确定环境的正确值,则可以考虑将该值设置为*,这将允许自动创建所有索引。
Elasticsearch不会在安装后自动启动。如何启动和停止Elasticsearch取决于您的系统是使用 SysV init 还是 systemd(较新的发行版会用)。通过以下命令知道正在使用哪一个:
ps -p 1
使用update-rc.d命令将Elasticsearch配置为在系统启动时自动启动:
sudo update-rc.d elasticsearch defaults 95 10
Elasticsearch可以使用 service 命令启动和停止:
sudo -i service elasticsearch start
sudo -i service elasticsearch stop
如果 Easticsearch 由于任何原因无法启动,失败日志会被打印到 STDOUT.log 文件,位于 /var/log/elasticsearch/ 目录。
运行以下命令将Elasticsearch配置为在系统启动时自动启动:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
使用以下命令启动和停止Elasticsearch:
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
这些命令不直接反馈elasticsearch是否成功启动。而是将启动信息写入 /var/log/elasticsearch/ 目录的日志文件中。
如果您已对Elasticsearch密钥库进行密码保护,则需要使用本地文件和systemd环境变量向systemd提供密钥库密码。 该本地文件存在时应受到保护,并且在Elasticsearch启动并运行后可以安全地删除它。
echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service
默认情况下,Elasticsearch服务不会在systemd日志中记录信息。要启用 journalctl 日志记录, --quiet 选项必须从 elasticsearch.service 文件中的 ExecStart 命令行删除。
启用systemd日志记录后,可以使用 journalctl 命令获得日志记录信息:
跟踪日志:
sudo journalctl -f
列出elasticsearch服务的日志条目:
sudo journalctl --unit elasticsearch
列出给定时间开始的elasticsearch服务的日志条目:
sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"
查看 man journalctl 或 https://www.freedesktop.org/software/systemd/man/journalctl.html 获得更多命令选项。
您可以向本地主机上的9200端口发送http请求来测试Elasticsearch节点是否正在运行:
GET /
返回如下:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.8.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
Elasticsearch默认使用 /etc/elasticsearch 进行运行时配置。该目录和该目录中的所有文件的所有权在安装时设置为 root:elasticsearch ,并且该目录设置了 setgid 标志,因此在 /etc/elasticsearch 下创建的任何文件和子目录也使用该所有权来创建(例如使用 keystore工具 创建 keystore),最好不要改动权限设置,以便 elasticsearch 进程可以通过组权限读取该目录下的文件。
默认情况下,elasticsearch从 /etc/elasticsearch/elasticsearch.yml 文件加载其配置。该配置文件的格式在 Configuring Elasticsearch 中进行了说明。
Debian包还有一个系统配置文件(/etc/default/elasticsearch),允许您配置以下设置:
设置 | 说明 |
---|---|
JAVA_HOME | 设置要使用的自定义 java 路径 |
MAX_OPEN_FILES | 打开文件的最大数量,默认为65,535。 |
MAX_LOCKED_MEMORY | 最大锁定内存大小。如果在 elasticsearch.yml 中使用了 bootstrap.memory_lock 选项,请将其设置为 unlimited 。 |
MAX_MAP_COUNT | 进程可能具有的内存映射区域的最大数量。如果使用 mmapfs 作为索引存储类型,请确保将其设置为较高的值。进入 Linux内核文档 找 max_map_count 相关来获取更多详情,该设置在启动elasticsearch之前通过 sysctl 配置。默认为262144。 |
ES_PATH_CONF | 配置文件目录(包括 elasticsearch.yml 、 jvm.options 和 log4j2.properties 文件);默认为/etc/elasticsearch。 |
ES_JAVA_OPTS | 您可能要应用的任何其他jvm系统属性。 |
RESTART_ON_UPGRADE | 配置在软件包升级时重新启动,默认为false。 这意味着您必须在手动安装软件包后重新启动Elasticsearch实例。 这样做的原因是为了确保集群升级不会导致连续的分片重新分配,从而导致高网络拥塞并减少集群的响应时间。 |
使用 systemd 的发行版要求通过 systemd 而不是通过 /etc/sysconfig/elasticsearch 文件配置系统资源限制。有关详细信息,请参阅系统配置。
Debian软件包将配置文件、日志和数据目录放置在基于Debian的系统的适当位置:
目录 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch home 目录或 $ES_HOME | /usr/share/elasticsearch | |
bin | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | /usr/share/elasticsearch/bin | |
conf | 配置文件,包括 elasticsearch.yml | /etc/elasticsearch | ES_PATH_CONF |
conf | 环境变量,包括堆大小、文件描述符。 | /etc/default/elasticsearch | |
data | 在节点上分配的每个索引 / 分片的数据文件的位置。可以容纳多个位置。 | /var/lib/elasticsearch | path.data |
jdk | 用于运行elasticsearch的捆绑JDK。可以通过在 /etc/default/elasticsearch 中设置 JAVA_HOME 环境变量来重写。 | /usr/share/elasticsearch/jdk | |
logs | 日志文件位置 | /var/log/elasticsearch | path.logs |
plugins | 插件文件位置。每个插件都将包含在子目录中。 | /usr/share/elasticsearch/plugins | |
repo | 共享文件系统仓库位置。可以容纳多个位置。文件系统仓库可以放置在此处指定的任何目录的任何子目录中。 | 未设置 | path.repo |
Elasticsearch的RPM可以从我们的网站或 RPM 仓库下载。它可用于支持 RPM 的系统(如OpenSuSE、SLES、 CentOS、Red Hat、and Oracle Enterprise)上安装Elasticsearch。
如果你系统发行版(如SLES 11和Centos 5)上的 RPM 太旧的话,不支持通过 RPM 安装 Elasticsearch,您参考本章从 tar.gz 包安装Elasticsearch。
此软件包在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/subscriptions 查看有关 Elastic 许可证级别的信息。
Elasticsearch的最新稳定版本在 Download Elasticsearch 页面中有下载。其他版本可在 Past Releases page 页面中找到。
Elasticsearch包括来自JDK维护者(GPLv2 + ce)的OpenJDK捆绑版本。如果您要使用自己的Java版本,请参考本章开头部分。
我们使用Elasticsearch签名密钥(PGP密钥 D88E42B4 ,可从 https://pgp.mit.edu 获得)对所有安装包进行签名,并使用指纹:
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装签名公钥:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
在基于RedHat发行版中 /etc/yum.repos.d/ 目录下创建一个名为 elasticsearch.repo 的文件,或在基于 OpenSuSE发行版中 /etc/zypp/repos.d/ 目录下为创建一个名为 elasticsearch.repo 的文件,该文件包含:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
您的仓库已准备就绪。现在,您可以根据您的系统使用以下命令之一安装Elasticsearch:
# 在Centos和基于Red Hat的旧版本中使用yum。
sudo yum install --enablerepo=elasticsearch elasticsearch
# 在 Fedora和其他较新的Red Hat发行版上使用dnf。
sudo dnf install --enablerepo=elasticsearch elasticsearch
# 在基于 OpenSuSE 的分布上使用zypper
sudo zypper modifyrepo --enable elasticsearch && \
sudo zypper install elasticsearch; \
sudo zypper modifyrepo --disable elasticsearch
默认情况下,已配置的仓库处于禁用状态。这就消除了在升级系统其余部分时意外升级Elasticsearch的可能性。每个安装或升级命令都必须显式地启用仓库,如上面示例命令所示。
还提供了一个替代软件包,该软件包仅包含 Apache 2.0 许可证下可用的功能。在 elasticsearch.repo 文件中使用以下 baseurl 来安装:
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
Elasticsearch的RPM v7.8.1可从网站下载并按如下方式安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.8.1-x86_64.rpm.sha512
sudo rpm --install elasticsearch-7.8.1-x86_64.rpm
比较下载的 RPM 和发布的校验和的 SHA,该校验和应输出 Elasticsearch-{version}-x86_64.rpm: OK。
或者,您可以下载以下软件包,该软件包仅包含 Apache 2.0 许可证下提供的功能:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.8.1-x86_64.rpm。
在基于 systemd 发行版中,安装脚本会尝试设置内核参数(例如 vm.max_map_count),您可以通过屏蔽 systemd-sysctl.service 部件来跳过此操作。
一些商业特性允许自动在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 设置中很可能需要其他索引名称,并且确切的值将取决于您的本地配置。如果您不确定环境的正确值,则可以考虑将该值设置为*,这将允许自动创建所有索引。
Elasticsearch不会在安装后自动启动。如何启动和停止Elasticsearch取决于您的系统是使用 SysV init 还是 systemd(较新的发行版会用)。通过以下命令知道正在使用哪一个:
ps -p 1
使用 chkconfig 命令将 Elasticsearch 配置为在系统启动时自动启动:
sudo chkconfig --add elasticsearch
Elasticsearch可以使用 service 命令启动和停止:
sudo -i service elasticsearch start
sudo -i service elasticsearch stop
如果 Easticsearch 由于任何原因无法启动,失败日志会被打印到 STDOUT.Log 文件,位于 /var/log/elasticsearch/ 目录。
运行以下命令将Elasticsearch配置为在系统启动时自动启动:
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
使用以下命令启动和停止Elasticsearch:
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
这些命令不直接反馈elasticsearch是否成功启动。而是将启动信息写入 /var/log/elasticsearch/ 目录的日志文件中。
如果您已对Elasticsearch密钥库进行密码保护,则需要使用本地文件和systemd环境变量向systemd提供密钥库密码。 该本地文件存在时应受到保护,并且在Elasticsearch启动并运行后可以安全地删除它。
echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service
默认情况下,Elasticsearch服务不会在systemd日志中记录信息。要启用 journalctl 日志记录, --quiet 选项必须从 elasticsearch.service 文件中的 ExecStart 命令行删除。
启用systemd日志记录后,可以使用 journalctl 命令获得日志记录信息:
跟踪日志:
sudo journalctl -f
列出elasticsearch服务的日志条目:
sudo journalctl --unit elasticsearch
列出给定时间开始的elasticsearch服务的日志条目:
sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"
查看 man journalctl 或 https://www.freedesktop.org/software/systemd/man/journalctl.html 获得更多命令选项。
您可以向本地主机上的9200端口发送http请求来测试Elasticsearch节点是否正在运行:
GET /
返回如下:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.8.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
Elasticsearch默认使用 /etc/elasticsearch 进行运行时配置。该目录和该目录中的所有文件的所有权在安装时设置为 root:elasticsearch ,并且该目录设置了 setgid 标志,因此在 /etc/elasticsearch 下创建的任何文件和子目录也使用该所有权来创建(例如使用 keystore工具 创建 keystore),最好不要改动权限设置,以便 elasticsearch 进程可以通过组权限读取该目录下的文件。
默认情况下,elasticsearch从 /etc/elasticsearch/elasticsearch.yml 文件加载其配置。该配置文件的格式在 Configuring Elasticsearch 中进行了说明。
RPM还有一个系统配置文件(/etc/sysconfig/elasticsearch),可用于配置以下设置:
设置 | 说明 |
---|---|
JAVA_HOME | 设置要使用的自定义 java 路径 |
MAX_OPEN_FILES | 打开文件的最大数量,默认为65,535。 |
MAX_LOCKED_MEMORY | 最大锁定内存大小。如果在 elasticsearch.yml 中使用了 bootstrap.memory_lock 选项,请将其设置为 unlimited 。 |
MAX_MAP_COUNT | 进程可能具有的内存映射区域的最大数量。如果使用 mmapfs 作为索引存储类型,请确保将其设置为较高的值。进入 Linux内核文档 找 max_map_count 相关来获取更多详情,该设置在启动elasticsearch之前通过 sysctl 配置。默认为262144。 |
ES_PATH_CONF | 配置文件目录(包括 elasticsearch.yml 、 jvm.options 和 log4j2.properties 文件);默认为/etc/elasticsearch。 |
ES_JAVA_OPTS | 您可能要应用的任何其他jvm系统属性。 |
RESTART_ON_UPGRADE | 配置在软件包升级时重新启动,默认为false。 这意味着您必须在手动安装软件包后重新启动Elasticsearch实例。 这样做的原因是为了确保集群升级不会导致连续的分片重新分配,从而导致高网络拥塞并减少集群的响应时间。 |
使用 systemd 的发行版要求通过 systemd 而不是通过 /etc/sysconfig/elasticsearch 文件配置系统资源限制。有关详细信息,请参阅系统配置。
RPM软件包将配置文件、日志和数据目录放置在基于RPM的系统的适当位置:
目录 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch home 目录或 $ES_HOME | /usr/share/elasticsearch | |
bin | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | /usr/share/elasticsearch/bin | |
conf | 配置文件,包括 elasticsearch.yml | /etc/elasticsearch | ES_PATH_CONF |
conf | 环境变量,包括堆大小、文件描述符。 | /etc/default/elasticsearch | |
data | 在节点上分配的每个索引 / 分片的数据文件的位置。可以容纳多个位置。 | /var/lib/elasticsearch | path.data |
jdk | 用于运行elasticsearch的捆绑JDK。可以通过在 /etc/default/elasticsearch 中设置 JAVA_HOME 环境变量来重写。 | /usr/share/elasticsearch/jdk | |
logs | 日志文件位置 | /var/log/elasticsearch | path.logs |
plugins | 插件文件位置。每个插件都将包含在子目录中。 | /usr/share/elasticsearch/plugins | |
repo | 共享文件系统仓库位置。可以容纳多个位置。文件系统仓库可以放置在此处指定的任何目录的任何子目录中。 | 未设置 | path.repo |
此功能处于beta版本,可能会更改。 该设计和代码不如正式的GA功能成熟,并且按原样提供,不提供任何担保。 Beta功能不受官方SLA约束的GA功能的支持。
Elasticsearch可以使用MSI 安装在Windows上。可以将Elasticsearch安装为Windows服务,也可以使用包含的Elasticsearch.exe可执行文件手动运行Elasticsearch。
在Windows平台Elasticsearch大多采用zip包安装,如果愿意,可以继续使用zip包方法。
此软件包在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/subscriptions 查看有关 Elastic 许可证级别的信息。
在Windows上,Elasticsearch机器学习功能需要Microsoft Universal C运行时库,Windows 10、Windows Server 2016和Windows的最新版本会内置该运行时库。对于较旧版本的Windows,可以通过Windows Update安装,也可以单独下载安装。如果无法安装Microsoft Universal C运行时库,则在禁用机器学习功能的情况下,仍可以使用Elasticsearch的其余功能。
Elasticsearch的最新稳定版本在 Download Elasticsearch 页面有下载。其他版本可在 Past Releases page 页面中找到。
Elasticsearch包括来自JDK维护者(GPLv2 + ce)的OpenJDK捆绑版本。如果您要使用自己的Java版本,请参考本章开头部分。
从 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1.msi 下载Elasticsearch v7.8.1的 MSI 包。
双击下载的 MSI 安装包以启动GUI 向导,该向导将指导您完成安装过程。您可以通过单击?按钮查看任何步骤的帮助,该按钮将显示一个包含每个输入的附加信息的辅助面板:
在第一个屏幕中,选择安装的目录。此外,请选择要放置数据、日志和配置的目录,或使用默认位置:
然后根据需要选择是作为服务安装还是手动启动Elasticsearch。作为服务安装时,您还可以配置Windows帐户以运行服务,是否应在安装后启动服务,以及Windows启动行为:
选择要运行服务的Windows帐户时,请确保所选帐户具有访问所选安装目录和其他部署目录的足够权限。还要确保该帐户能够运行Windows服务。
在“配置”部分中显示了常见的配置设置,除内存和网络设置外,还允许设置集群名称、节点名称和角色:
可作为安装的一部分下载和安装的常用插件的列表,其中包含配置https代理的选项,可通过该代理下载这些插件。
确保安装计算机可以访问internet,并且已将所有公司防火墙配置为允许从 artifacts.elastic.co 下载:
X-Pack 包括试用许可证或基本许可证的选择。试用许可证的有效期为30天,在此之后,您可以获得其中一个可用订阅。基本许可证是免费和永久的。有关在哪种许可证下提供哪些功能的详细信息,请参阅可用订阅。
MSI 还可以使用命令行安装Elasticsearch。使用与GUI相同的默认设置的最简单的安装方法是首先进入下载目录,然后运行:
msiexec.exe /i elasticsearch-7.8.1.msi /qn
默认情况下,msiexec.exe 不会等待安装过程完成,因为它在 Windows 子系统中运行。要等待进程完成并确保相应地设置了 %ERRORLEVEL%,建议使用 “start / wait” 创建进程并等待其退出。
start /wait msiexec.exe /i elasticsearch-7.8.1.msi /qn
与任何 MSI 安装包一样,可以在 %TEMP% 目录中找到安装过程的日志文件,其中随机生成的名称遵循 MSI.LOG 格式。可以使用 /l 命令行参数提供日志文件的路径
start /wait msiexec.exe /i elasticsearch-7.8.1.msi /qn /l install.log
支持的 Windows Installer 命令行参数可以查看使用说明
msiexec.exe /help
或查阅 Command-Line Options。
GUI 中公开的所有设置也可作为命令行参数(在windows installer 文档中称为“属性”)提供,这些参数可传递给 msiexec.exe :
属性 | 描述 |
---|---|
INSTALLDIR | 安装目录。路径中的最终目录必须是Elasticsearch的版本。默认设置为 %ProgramW6432%\Elastic\Elasticsearch\7.8.1 |
DATADIRECTORY | 用于存储数据的目录。默认设置为 %ALLUSERSPROFILE%\Elastic\Elasticsearch\data |
CONFIGDIRECTORY | 用于存储配置的目录。默认设置为 %ALLUSERSPROFILE%\Elastic\Elasticsearch\config |
LOGSDIRECTORY | 用于存储日志的目录。默认设置为 %ALLUSERSPROFILE%\Elastic\Elasticsearch\logs |
PLACEWRITABLELOCATIONSINSAMEPATH | 是否应在安装目录下创建数据、配置和日志目录。默认为false |
INSTALLASSERVICE | 是否安装Elasticsearch并将其配置为windows服务。默认值为true |
STARTAFTERINSTALL | Windows服务是否在安装完成后启动。默认值为true |
STARTWHENWINDOWSSTARTS | Windows启动时是否启动windows服务。默认值为true |
USELOCALSYSTEM | Windows服务是否在 LocalSystem 帐户下运行。默认值为true |
USENETWORKSERVICE | Wndows服务是否在 NetworkService 帐户下运行。默认为false |
USEEXISTINGUSER | Windows服务是否在指定的现有帐户下运行。默认为false |
USER | 运行Windows服务的帐户的用户名。默认为"" |
PASSWORD | 运行Windows服务的帐户的密码。默认为"" |
CLUSTERNAME | 集群名称。默认值为Elasticsearch |
NODENAME | 节点名称。默认为 %COMPUTERNAME% |
MASTERNODE | 是否将Elasticsearch配置为主节点。默认值为true |
DATANODE | 是否将Elasticsearch配置为数据节点。默认值为true |
INGESTNODE | 是否将Elasticsearch配置为接入节点。默认值为true |
SELECTEDMEMORY | 要分配给Elasticsearch的jvm堆的内存量。默认设置为2048,除非目标计算机的总内存小于4GB,在这种情况下,默认设置为总内存的50%。 |
LOCKMEMORY | 是否使用 bootstrap.memory_lock 尝试将进程地址空间锁定到RAM中。默认为false |
UNICASTNODES | 以逗号分隔的主机列表,格式为 host:port 或host,用于单播发现。默认为"" |
MINIMUMMASTERNODES | 要形成集群,必须可见的符合条件的主节点的最小数量。默认为“” |
NETWORKHOST | 将节点绑定到并将此主机发布(通告)到群集中的其他节点的主机名或ip地址。默认为“” |
HTTPPORT | 用于通过http公开Elasticsearch api的端口。默认为9200 |
TRANSPORTPORT | 用于集群中的节点之间的内部通信的端口。默认为9300 |
PLUGINS | 作为安装的一部分下载和安装的插件的逗号分隔列表。默认为“” |
HTTPSPROXYHOST | 用于通过https下载插件的代理主机。默认为“” |
HTTPSPROXYPORT | 用于通过https下载插件的代理端口。默认为443 |
HTTPPROXYHOST | 用于通过http下载插件的代理主机。默认为“” |
HTTPPROXYPORT | 用于通过http下载插件的代理端口。默认为80 |
XPACKLICENSE | 要安装的许可证类型,包括 Basic 和 Trial。默认为 Basic |
XPACKSECURITYENABLED | 使用 Trial 许可证进行安装时,是否启用了安全功能。默认值为true |
BOOTSTRAPPASSWORD | 在启用 Trial 许可证和安全功能的情况下进行安装时,用于引导集群的密码将作为 bootstrap.password 设置保留在密钥库中。默认为随机值。 |
SKIPSETTINGPASSWORDS | 在启用 Trial 许可证和安全功能的情况下进行安装时,安装是否应跳过设置内置用户。默认为false |
ELASTICUSERPASSWORD | 当使用 Trial 许可证安装并且启用了安全功能时,内置用户 elastic 的密码。默认为“” |
KIBANAUSERPASSWORD | 在使用 Trial 许可证安装并且启用了安全功能时,内置用户 kibana 的密码。默认为“” |
LOGSTASHSYSTEMUSERPASSWORD | 在使用 Trial 许可证安装并且启用了安全功能时,内置用户 logstash_system 的密码。默认为“” |
要传递值,只需使用格式 ="" 将属性名称和值附加到安装命令。例如,要使用与默认目录不同的安装目录,请执行以下操作:
start /wait msiexec.exe /i elasticsearch-7.8.1.msi /qn INSTALLDIR="C:\Custom Install Directory{version}"
有关与包含引号的值相关的其他规则,请参阅 Command-Line Options。
一些商业特性允许自动在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 设置中很可能需要其他索引名称,并且确切的值将取决于您的本地配置。如果您不确定环境的正确值,则可以考虑将该值设置为*,这将允许自动创建所有索引。
安装后,如果未作为服务安装并配置为在安装完成后启动,则可以从命令行启动Elasticsearch,如下所示:
.\bin\elasticsearch.exe
命令行终端显示如下:
默认情况下,Elasticsearch在前台运行,除了 LOGSDIRECTORY 中的 .log 文件外,还会将其日志打印到 STDOUT,可通过按 Ctrl-C 来停止。
默认情况下,Elasticsearch从 %ES_PATH_CONF%\elasticsearch.yml 文件加载其配置。此配置文件的格式在 Configuring Elasticsearch 中进行了说明。
可以在配置文件中指定的任何设置也可以在命令行上使用 -E 语法指定,如下所示:
.\bin\elasticsearch.exe -E cluster.name=my_cluster -E node.name=node_1
包含空格的值必须用引号括起来。例如 -E path.logs=“C:\My Logs\logs”。
通常,所有集群通用的设置(如cluster.name)都应添加到 elasticsearch.yml 配置文件中,而任何节点特定的设置(如node.name)都可以在命令行中指定。
您可以向本地主机上的9200端口发送http请求来测试Elasticsearch节点是否正在运行:
GET /
返回如下:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "7.8.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "8.5.1",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
Elasticsearch 可以作为一项服务安装,以便在后台运行或在引导时自动启动,无需用户参与。这可以在安装时使用以下命令行选项来实现:
安装后,Elasticsearch 将出现在“服务控制面板”中:
可以从控制面板中停止和重新启动,或从命令行使用:
使用命令提示符:
sc.exe stop Elasticsearch
sc.exe start Elasticsearch
使用powershell:
Get-Service Elasticsearch | Stop-Service
Get-Service Elasticsearch | Start-Service
在安装之后可以通过修改 jvm.options 和 elasticsearch.yml 配置文件来配置服务。大多数更改(如jvm设置)都需要重新启动服务才能生效。
MSI 安装包支持将已安装的Elasticsearch版本升级到较新版本。通过GUI的升级过程处理升级所有已安装的插件以及保留您的数据和配置。
下载并双击较新版本的 MSI 安装包将启动GUI向导。第一步将列出以前安装的属性:
下一步允许更改某些配置选项:
最后,允许升级或删除当前安装的插件,对于当前未安装的插件,则可以下载和安装:
MSI 还可以使用命令行升级Elasticsearch。
命令行升级需要传递与首次安装时使用的命令行属性相同的命令行属性;Windows Installer不会记住这些属性。
例如,如果最初使用命令行选项 PLUGINS=“ingest-geoip” 和 LOCKMEMORY=“true” 安装,则在从命令行执行升级时必须传递这些相同的值。
INSTALLDIR 设置(如果最初指定)是例外,它必须是与当前安装不同的目录。如果设置 INSTALLDIR,则路径中的最终目录必须是Elasticsearch的版本,例如:C:\Program Files\Elastic\Elasticsearch\7.8.1
最简单的升级(假设使用所有默认值安装了Elasticsearch),首先进入下载目录,然后运行:
start /wait msiexec.exe /i elasticsearch-7.8.1.msi /qn
与安装过程类似,可以使用 /l 命令行参数传递升级过程的日志文件的路径
start /wait msiexec.exe /i elasticsearch-7.8.1.msi /qn /l upgrade.log
MSI 安装包在卸载时会处理安装时添加的所有目录和文件。
卸载将删除在安装过程中创建的所有内容,但数据、配置或日志目录除外。建议您在升级之前考虑拷贝数据目录或者使用快照API。
MSI 安装包不提供用于卸载的GUI。通过按 Windows 键并输入 “add or remove” 以打开系统设置,可以卸载已安装的程序。
打开后,在已安装的应用程序列表中找到Elasticsearch安装,单击并选择 “Uninstall”:
这将启动卸载过程。
也可以通过 cd 到包含 MSI 包的目录并运行以下操作,从命令行执行卸载:
start /wait msiexec.exe /x elasticsearch-7.8.1.msi /qn
与安装过程类似,可以使用 /l 命令行参数传递卸载过程的日志文件的路径:
start /wait msiexec.exe /x elasticsearch-7.8.1.msi /qn /l uninstall.log
elasticsearch也可以作为Docker镜像提供。这些镜像使用Centos 7作为基础镜像。
所有发布的Docker镜像和标签的列表可在 www.docker.elastic.co 获得。源文件在 GitHub 中。
此镜像在 Elastic 许可下可免费使用。它分开源和免费版本、付费版,功能不同。您可以选择试用30天,尝试所有的付费商业。点击https://www.elastic.co/subscriptions 查看有关 Elastic 许可证级别的信息。
获取适用于Docker的Elasticsearch就像向Elastic Docker注册表发送 docker pull 命令一样简单。
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.8.1
或者,您可以下载其他Docker镜像,这些镜像只包含Apache 2.0许可证下可用的功能。要下载这些镜像,请访问 www.docker.elastic.co。
要启动单节点Elasticsearch集群以进行开发或测试,请指定single-node discovery以绕过启动检查:
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.8.1
要在Docker中创建和运行三节点 elasticsearch 集群,可以使用Docker-Compose:
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
该 docker-compose.yml 示例文件提供了一个三节点 elasticsearch 集群。节点 es01 在 localhost:9200 上监听,es02 和 es03 通过 Docker 网络与es01通信。
请注意,该配置会在所有网络接口上公开 9200 端口 ,并且鉴于 Docker 如何在 Linux 上操作 iptables,意味着您的 Elasticsearch集群可以公开访问,可能会忽略任何防火墙设置。如果您不想公开 9200 端口,而是使用反向代理,请在 docker-compose.yml 文件中将 9200:9200 替换为 127.0.0.1:9200:9200 。Elasticsearch 将只能从本主机访问。
Docker 数据卷 data01、data02 和 data03 可以存储节点数据目录,以便数据在重新启动期间保持不变。如果它们不存在,docker-compose 会在启动集群时创建它们。
在 Linux 平台上安装的 Docker 不会预装 Docker Compose 。有关安装说明,请参阅 Install Compose on Linux
docker-compose up
curl -X GET "localhost:9200/_cat/nodes?v&pretty"
日志会被转到控制台,并由配置的 Docker 日志驱动程序处理。默认情况下,您可以使用 docker logs 访问日志。
要停止集群,请运行 docker-compose down 。使用 docker-compose up 重新启动集群时,Docker 数据卷中的数据将保留并加载。要在关闭集群时删除数据卷,请指定 -v 选项:docker-compose down -v。
请参阅 Elasticsearch Docker容器加密通信 和 在启用TLS的Docker中运行Elastic Stack。
以下要求和建议在生产中以Docker运行Elasticsearch时适用。
内核参数 vm.max_map_count 必须至少设置为 262144 才能用于生产,vm.max_map_count 的设置方式取决于您的平台:
Linux
grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144
要应用该设置,请运行:
sysctl -w vm.max_map_count=262144
Docker MacOS
必须在xhyve虚拟机中设置 vm.max_map_count 设置:
a. 从命令行运行:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
b. 按 enter 键并使用 sysctl 配置 vm.max_map_count:
sysctl -w vm.max_map_count=262144
c. Ctrl + d 退出屏幕会话
带Docker桌面的Windows、MacOS
vm.max_map_count 设置必须通过 docker-machine 进行设置:
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
默认情况下,Elasticsearch作为用户 elasticsearch 在容器内运行,使用 uid:gid 1000:0。
一个例外是Openshift,它使用任意分配的用户ID运行容器。Openshift会在gid设置为0的情况下显示持久卷,该卷无需任何调整即可工作。
如果要挂载本地目录或文件,则 elasticsearch 用户必须具有该目录或文件的读权限。此外,该用户必须具有对数据和日志目录的写权限。一个好的策略是授予组对本地目录的gid 0的访问权限。
例如,准备挂载本地目录来存储数据:
mkdir esdatadir
chmod g+rwx esdatadir
chgrp 0 esdatadir
最后,您可以通过环境变量 TAKE_FILE_OWNERSHIP 强制容器改变用于挂载数据和日志目录的所有权。执行此操作时,所有权将归 uid:gid 1000:0,用于提供对Elasticsearch进程所需的读 / 写访问权限。
提高的nofile和nproc的ulimit必须可用于Elasticsearch容器。验证Docker守护进程的初始化系统是否将其设置为可接受的值。
要检查 ulimit 的Docker守护进程默认值,请运行:
docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su'
如果需要,请在守护程序中调整ulimit,或在每个容器重写ulimit。 例如,docker run 设置:
--ulimit nofile=65535:65535
为了提高性能和节点稳定性,最好禁用swap交换分区。具体操作请参阅禁用swap交换分区。
也可以选择 bootstrap.memory_lock: true 方式来锁定物理内存地址,防止es内存被交换出去,也就避免es使用swap交换分区,频繁的交换,会导致IOPS变高,通过示例文件 docker-compose.yml 所示的那样明确地为容器设置,或者在Docker守护进程定义 memlock: true ulimit, 在 docker run 时指定:
-e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1
镜像对外暴露 TCP 端口9200和9300。对于生产集群,建议使用 –publish-all 对发布的端口随机化,除非您为每台主机固定一个容器。
要配置堆大小,可以在 /usr/share/elasticsearch/config/jvm.options.d 挂载一个JVM options文件,该文件包括所需的堆大小设置。请注意,虽然默认的jvm.options 根文件设置了一个 1GB 的默认堆,但在挂载的JVM options文件中设置的任何值都将覆盖它。
虽然建议通过挂载JVM options设置堆大小,但您也可以通过使用 ES_JAVA_OPTS 环境变量设置堆大小。例如,若要使用16 GB,请在 docker run 时指定 -e ES_JAVA_OPTS="-Xms16g -Xmx16g" ,上面的 ***docker-compose.ym***l 文件将堆大小设置为512 MB。
即使限制了对容器的内存访问,也必须配置堆大小。
最好是部署固定版本的镜像,例如:docker.elastic.co/elasticsearch/elasticsearch:7.8.1。
出于以下原因,您应该使用在 /usr/share/elasticsearch/data 上绑定的 volumn:
如果您使用的是devicemapper存储驱动程序,请不要使用默认的 loop-lvm 模式。将 docker-engine 配置为使用direct-lvm。
考虑使用不同的日志驱动程序来收集日志。默认的 json-file 在生产环境效果并不理想。
在Docker中运行时,将从 /usr/share/elasticsearch/config/ 加载Elasticsearch配置文件。
要使用自定义配置文件,请将文件挂载到镜像中的配置文件上。
您可以使用Docker环境变量配置各个 Elasticsearch 设置。docker-compose.yml 示例文件和单节点示例使用该方法。
若要使用文件的内容来设置环境变量,请在环境变量名后加上 _FILE 。这对于在不直接指定密码的情况下将诸如密码之类的参数传递给Elasticsearch很有用。
例如,要从文件中设置Elasticsearch启动密码,可以挂载文件,并将 ELASTIC_PASSWORD_FILE 环境变量设置为挂载位置。例如将密码文件挂载到 /run/secrets/password.txt,请指定:
-e ELASTIC_PASSWORD_FILE=/run/secrets/bootstrapPassword.txt
还可以重写镜像的默认命令,以命令行选项形式配置Elasticsearch设置。例如:
docker run <various parameters> bin/elasticsearch -Ecluster.name=mynewclustername
虽然挂载配置文件通常是生产环境的首选方法,但您也可以创建包含配置的自定义Docker镜像。
创建自定义配置文件,并将其挂载到Docker镜像中的相应文件上。 例如,使用 docker run 挂载 custom_elasticsearch.yml 时,请指定:
-v full_path_to/custom_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
容器使用 uid:gid 1000:0 以用户 elasticsearch 的身份运行 Elasticsearch。该用户必须可以访问挂机的主机目录和文件,并且拥有数据和日志目录的写权限。
默认情况下,Elasticsearch将自动生成用于安全设置的密钥库文件。此文件已经过代码混淆,但没有加密。如果要使用密码加密,则必须使用 elasticsearch-keystore 工具创建受密码保护的keystore,并挂载到容器中的 /usr/share/elasticsearch/config/elasticsearch.keystore 上。为了在启动时向Docker容器提供密码,请将Docker环境变量 KEYSTORE_PASSWORD 设置为您的密码值。例如,docker run 命令可能有以下选项:
-v full_path_to/elasticsearch.keystore:/usr/share/elasticsearch/config/elasticsearch.keystore
-E KEYSTORE_PASSWORD=mypassword
在某些环境中,准备一个包含您配置的自定义镜像可能更有意义。一个用于实现此目的的 Dockerfile 可能很简单::
ROM docker.elastic.co/elasticsearch/elasticsearch:7.8.1
COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/
然后,您可以使用以下方法构建和运行镜像:
docker build --tag=elasticsearch-custom .
docker run -ti -v /usr/share/elasticsearch/data elasticsearch-custom
一些插件需要额外的安全权限。您必须通过以下方式明确的授权:
有关详细信息,请参阅插件管理。
Elastic 发布了Homebrew formulae,以便您可以使用 Homebrew 软件包管理器安装Elasticsearch。
要使用 Homebrew 进行安装,您首先需要装上Elastic Homebrew仓库:
brew tap elastic/tap
装上Elastic Homebrew仓库后,可以使用 brew install 安装Elasticsearch的默认发行版:
brew install elastic/tap/elasticsearch-full
这将安装最近发布的Elasticsearch的默认发行版。要安装OSS发行版,请指定 elastic/tap/elasticsearch-oss 。
当您使用 brew install 安装Elasticsearch时,配置文件、日志和数据目录将存储在以下位置。
目录 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch home 目录或 %ES_HOME% | /usr/local/var/homebrew/linked/elasticsearch-full | |
bin | 二进制脚本,包括用于启动节点的 elasticsearch 和用于安装插件的 elasticsearch-plugin | /usr/local/var/homebrew/linked/elasticsearch-full/bin | |
conf | 配置文件,包括 elasticsearch.yml | /usr/local/etc/elasticsearch | ES_PATH_CONF |
data | 在节点上分配的每个索引 / 分片的数据文件的位置。可以容纳多个位置。 | /usr/local/var/lib/elasticsearch | path.data |
logs | 日志文件位置 | /usr/local/var/log/elasticsearch | path.logs |
plugins | 插件文件位置。每个插件都将包含在子目录中。 | /usr/local/var/homebrew/linked/elasticsearch/plugins |