Elasticsearch6.8开发指南-第三章-设置Elasticsearch

Elasticsearch6.8开发指南-第三章-设置Elasticsearch

  • 本章简介
  • 安装Elasticsearch
    • 使用.zip或安装Elasticsearch.tar.gz
    • 在Windows上安装Elasticsearch with.zip
    • 使用Debian软件包安装Elasticsearch
    • 使用RPM安装Elasticsearch
    • 使用Windows MSI安装程序安装Elasticsearch
    • 使用Docker安装Elasticsearch
  • 配置Elasticsearch
    • 设置JVM选项
    • 安全设置
    • 记录配置
  • 重要的Elasticsearch配置
    • path.data和path.logs
    • cluster.name
    • node.name
    • network.host
    • 发现设置
    • 设置堆大小
    • JVM堆转储路径
    • GC日志记录
    • Temp目录
    • JVM致命错误日志
  • 重要系统配置
    • 配置系统设置
    • 禁用交换
    • 文件描述符
    • 虚拟内存
    • 线程数
    • DNS缓存设置
    • JNA临时目录未与之一起安装noexec
  • 引导检查
    • 堆大小检查
    • 文件描述符检查
    • 内存锁定检查
    • 最大线程数检查
    • 最大文件大小检查
    • 最大大小虚拟内存检查
    • 最大映射计数检查
    • 客户端JVM检查
    • 使用串行收集器检查
    • 系统调用过滤器检查
    • OnError和OnOutOfMemoryError检查
    • 早期访问检查
    • G1GC检查
    • 所有权限检查
  • 启动Elasticsearch
  • 停止Elasticsearch
  • 将节点添加到集群
  • 在Elasticsearch中安装X-Pack
  • 设置X-Pack
  • 配置X-Pack Java客户端
  • Elasticsearch中的 X-Pack设置
    • 跨集群复制设置
    • X-Pack许可设置
    • Elasticsearch中的机器学习设置
    • Elasticsearch中的监视设置
    • Elasticsearch中的 SQL访问设置
    • Elasticsearch中的 Watcher设置
  • X-Pack的引导检查

本章简介

本部分包括有关如何设置Elasticsearch并使其运行的信息,包括:

正在下载
正在安装
开始
配置中
支持平台编辑
可在此处获得官方支持的操作系统和JVM的矩阵: 支持矩阵。Elasticsearch已在列出的平台上进行了测试,但也可能会在其他平台上运行。

Java(JVM)版本编辑
Elasticsearch是使用Java构建的,并且至少需要 Java 8 才能运行。仅支持Oracle的Java和OpenJDK。在所有Elasticsearch节点和客户端上应使用相同的JVM版本。

我们建议安装Java版本1.8.0_131或Java 8发行版本中的更高版本。我们建议使用 受支持 的Java LTS版本。如果使用已知的Java错误版本,Elasticsearch将拒绝启动。

可以通过设置JAVA_HOME环境变量来配置Elasticsearch将使用的Java版本。

安装Elasticsearch

托管的Elasticsearch编辑
Elasticsearch可以在您自己的硬件上运行,也可以使用我们在Elastic Cloud上托管的Elasticsearch服务运行 ,该服务可在AWS,GCP和Azure上使用。您可以免费试用托管服务。

自己安装Elasticsearch编辑
Elasticsearch以下列软件包格式提供:

zip/tar.gz

在zip和tar.gz包适合安装在任何系统上,并且是入门Elasticsearch在大多数系统中最容易的选择。

与安装Elasticsearch .zip或.tar.gz或与安装Elasticsearch .zip在Windows

deb

该deb软件包适用于Debian,Ubuntu和其他基于Debian的系统。Debian软件包可以从Elasticsearch网站或我们的Debian存储库中下载。

使用Debian软件包安装Elasticsearch

rpm

该rpm软件包适合在Red Hat,Centos,SLES,OpenSuSE和其他基于RPM的系统上安装。RPM可以从Elasticsearch网站或我们的RPM存储库下载。

使用RPM安装Elasticsearch

msi

[ beta ] 此功能处于beta版本,可能会更改。该设计和代码不如正式的GA功能成熟,并且按原样提供,不提供任何担保。Beta功能不受官方GA功能的支持SLA约束。该msi软件包适合在至少安装了.NET 4.5框架的Windows 64位系统上安装,并且是在Windows上开始使用Elasticsearch的最简单选择。MSI可以从Elasticsearch网站下载。

使用Windows MSI安装程序安装Elasticsearch

docker

图像可用于将Elasticsearch作为Docker容器运行。它们可以从Elastic Docker Registry下载。

使用Docker安装Elasticsearch

配置管理工具编辑
我们还提供以下配置管理工具来帮助进行大型部署:

木偶

-弹性搜索

厨师

食谱-弹性搜索

Ansible

反弹性搜索

使用.zip或安装Elasticsearch.tar.gz

Elasticsearch作为.zip和.tar.gz包提供。这些软件包可用于在任何系统上安装Elasticsearch,并且是试用Elasticsearch时最容易使用的软件包格式。

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

最新的稳定版本的Elasticsearch可以在“ 下载Elasticsearch”页面上找到 。其他版本可以在“ 过去发行版”页面上找到 。

Elasticsearch需要Java 8或更高版本。使用 官方的Oracle发行版 或开源发行版(例如OpenJDK)。

下载并安装.zip软件包编辑
.zipElasticsearch v6.8.12 的存档可以按以下方式下载和安装:

wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.zip
wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.zip 。sha512
shasum - 一个512 - çelasticsearch - 6.8 。12.zip 。sha512
解压elasticsearch - 6.8 。12.zip
光盘elasticsearch - 6.8 。12 /

比较下载的.zip档案的SHA 和应该输出的已发布校验和 elasticsearch-{version}.zip: OK。

此目录称为$ES_HOME。

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可下可用的功能:https : //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.12.zip

下载并安装.tar.gz软件包编辑
.tar.gzElasticsearch v6.8.12 的存档可以按以下方式下载和安装:

wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.tar 。z
wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.tar 。gz 。sha512
shasum - 一个512 - çelasticsearch - 6.8 。12.tar 。gz 。sha512
焦油- xzf elasticsearch - 6.8 。12.tar 。z
cd elasticsearch - 6.8 。12 /

比较下载的.tar.gz档案的SHA 和应该输出的已发布校验和 elasticsearch-{version}.tar.gz: OK。

此目录称为$ES_HOME。

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可的代码:https : //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.12.tar.gz

启用自动创建X-Pack索引编辑
X-Pack将尝试在Elasticsearch中自动创建多个索引。默认情况下,Elasticsearch配置为允许自动创建索引,并且不需要其他步骤。但是,如果你有Elasticsearch禁用自动创建索引,你必须配置 action.auto_create_index的elasticsearch.yml,让X-包创建以下指标:

行动。auto_create_index:.monitoring * 、. watches,.triggered_watches,.watcher - history * 、. ml *
如果使用Logstash 或Beats,则很可能需要在action.auto_create_index设置中使用其他索引名称,而确切的值将取决于本地配置。如果不确定环境的正确值,可以考虑将值设置为 *允许自动创建所有索引的值。

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

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

与Elasticsearch打包在一起的所有脚本都需要支持阵列的Bash版本,并假定Bash在以下位置可用/bin/bash。因此,Bash应该直接或通过符号链接在此路径上可用。

检查Elasticsearch是否正在运行编辑
您可以测试你的Elasticsearch节点通过发送一个HTTP请求的端口上运行9200上localhost:

GET /
复制为cURL
在控制台中查看

应该会给您这样的答复:

{ “名” :“Cp8oag6” ,“CLUSTER_NAME” :“elasticsearch” ,“cluster_uuid” :“AT69_T_DTp-1qgIJlatQqA” ,“版本” :{ “数字” :“6.8.12” ,“build_flavor” :“默认” ,“ build_type” :“ zip” ,“ build_hash” :“ f27399d” ,“ build_date” :“ 2016-03-30T09:51:41.449Z” ,“ build_snapshot”:false ,“ lucene_version” :“ 7.7.3” ,

“ minimum_wire_compatibility_version” :“ 1.2.3” ,“ minimum_index_compatibility_version” :“ 1.2.3” },“标语” :“您知道,要搜索”“ }  

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

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

./ bin / elasticsearch - d - p pid
日志消息可以在$ES_HOME/logs/目录中找到。

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

pkill的- ˚FPID
RPM和Debian 软件包中提供的启动脚本会为您启动和停止Elasticsearch进程。

在命令行上配置Elasticsearch编辑
$ES_HOME/config/elasticsearch.yml 默认情况下,Elasticsearch从文件中加载其配置。该配置文件的格式在配置Elasticsearch中进行了说明 。

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

./ 斌/ elasticsearch - d - Ecluster 。名称= my_cluster - Enode 。名称= node_1
通常,cluster.name应将所有群集范围的设置(如)添加到elasticsearch.yml配置文件中,而任何特定于节点的设置(例如node.name可以在命令行上指定)。

目录.zip和.tar.gz档案的布局编辑
在.zip和.tar.gz包是完全独立的。默认情况下,所有文件和目录都包含在其中$ES_HOME -解压缩归档文件时创建的目录。

这非常方便,因为您无需创建任何目录即可开始使用Elasticsearch,并且卸载Elasticsearch就像删除$ES_HOME目录一样容易。但是,建议更改配置目录,数据目录和日志目录的默认位置,以便以后不再删除重要数据。

类型 描述 默认位置 设置

Elasticsearch主目录或 $ES_HOME

通过解压缩存档创建目录

箱子

二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件

$ES_HOME/bin

conf

配置文件包括 elasticsearch.yml

$ES_HOME/config

ES_PATH_CONF

数据

节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。

$ES_HOME/data

path.data

日志

日志文件位置。

$ES_HOME/logs

path.logs

外挂程式

插件文件位置。每个插件将包含在一个子目录中。

$ES_HOME/plugins

回购

共享文件系统存储库位置。可以容纳多个位置。可以将文件系统存储库放置在此处指定的任何目录的任何子目录中。

未配置

path.repo

脚本

脚本文件的位置。

$ES_HOME/scripts

path.scripts

下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

在Windows上安装Elasticsearch with.zip

可以使用该.zip软件包在Windows上安装Elasticsearch 。它带有一个elasticsearch-service.bat命令,该命令将Elasticsearch设置为作为服务运行。

过去,Elasticsearch使用该.zip档案文件安装在Windows上。提供了一个MSI安装程序包,它为Windows提供了最简单的入门体验。.zip如果愿意,可以继续使用该方法。

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

最新的稳定版本的Elasticsearch可以在“ 下载Elasticsearch”页面上找到 。其他版本可以在“ 过去发行版”页面上找到 。

Elasticsearch需要Java 8或更高版本。使用 官方的Oracle发行版 或开源发行版(例如OpenJDK)。

下载并安装.zip软件包编辑
.zip从以下网址下载Elasticsearch v6.8.12 的存档:https /artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.12.zip

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可下可用的功能:https : //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.12.zip

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

cd c :\ elasticsearch - 6.8 。12
启用自动创建X-Pack索引编辑
X-Pack将尝试在Elasticsearch中自动创建多个索引。默认情况下,Elasticsearch配置为允许自动创建索引,并且不需要其他步骤。但是,如果你有Elasticsearch禁用自动创建索引,你必须配置 action.auto_create_index的elasticsearch.yml,让X-包创建以下指标:

行动。auto_create_index:.monitoring * 、. watches,.triggered_watches,.watcher - history * 、. ml *
如果使用Logstash 或Beats,则很可能需要在action.auto_create_index设置中使用其他索引名称,而确切的值将取决于本地配置。如果不确定环境的正确值,可以考虑将值设置为 *允许自动创建所有索引的值。

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

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

在命令行上配置Elasticsearch编辑
%ES_HOME%\config\elasticsearch.yml 默认情况下,Elasticsearch从文件中加载其配置。该配置文件的格式在配置Elasticsearch中进行了说明 。

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

。\ b 在\ elasticsearch 。蝙蝠- Ecluster 。名称= my_cluster - Enode 。名称= node_1
包含空格的值必须用引号引起来。例如-Epath.logs=“C:\My Logs\logs”。

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

检查Elasticsearch是否正在运行编辑
您可以测试你的Elasticsearch节点通过发送一个HTTP请求的端口上运行9200上localhost:

GET /
复制为cURL
在控制台中查看

应该会给您这样的答复:

{ “名” :“Cp8oag6” ,“CLUSTER_NAME” :“elasticsearch” ,“cluster_uuid” :“AT69_T_DTp-1qgIJlatQqA” ,“版本” :{ “数字” :“6.8.12” ,“build_flavor” :“默认” ,“ build_type” :“ zip” ,“ build_hash” :“ f27399d” ,“ build_date” :“ 2016-03-30T09:51:41.449Z” ,“ build_snapshot”:false ,“ lucene_version” :“ 7.7.3” ,

“ minimum_wire_compatibility_version” :“ 1.2.3” ,“ minimum_index_compatibility_version” :“ 1.2.3” },“标语” :“您知道,要搜索”“ }  

在Windows上安装Elasticsearch即服务编辑
Elasticsearch可以作为服务安装在后台运行,也可以在启动时自动启动,而无需任何用户交互。这可以通过文件夹中的elasticsearch-service.bat脚本来实现,该脚本bin\允许安装,删除,管理或配置服务,并有可能从命令行启动和停止该服务。

c :\ elasticsearch - 6.8 。12 \ b 在> elasticsearch - service中。蝙蝠

用法:elasticsearch - service 。蝙蝠安装| 删除| 开始| 停止| 经理[ SERVICE_ID ]
该脚本需要一个参数(要执行的命令),后跟一个可选参数,用于指示服务ID(在安装多个Elasticsearch服务时很有用)。

可用的命令有:

install

将Elasticsearch作为服务安装

remove

删除已安装的Elasticsearch服务(如果启动,则停止该服务)

start

启动Elasticsearch服务(如果已安装)

stop

停止Elasticsearch服务(如果已启动)

manager

启动用于管理已安装服务的GUI

服务的名称和值JAVA_HOME将在安装期间提供:

c :\ elasticsearch - 6.8 。12 \ b 在> elasticsearch - service中。蝙蝠安装
安装服务 :“elasticsearch服务-64” 使用JAVA_HOME (64 - 位):“C:\ JVM \ jdk1.8” 的服务’elasticsearch服务-64’ 已经安装。

尽管JRE可以用于Elasticsearch服务,但由于使用了客户端VM(与为长期运行的应用程序提供更好性能的服务器JVM相反),因此不鼓励使用JRE并发出警告。

系统环境变量JAVA_HOME应设置为您要使用该服务的JDK安装的路径。如果升级JDK,则不需要重新安装服务,但必须将系统环境变量的值设置JAVA_HOME为新JDK安装的路径。但是,不支持跨JVM类型(例如JRE与SE)进行升级,并且确实需要重新安装服务。

自定义服务设置编辑
可以在安装之前通过设置以下环境变量(使用命令行中的set命令或通过System Properties->Environment VariablesGUI)来配置Elasticsearch服务。

SERVICE_ID

服务的唯一标识符。如果在同一台计算机上安装多个实例,则很有用。默认为elasticsearch-service-x64。

SERVICE_USERNAME

默认运行的用户为本地系统帐户。

SERVICE_PASSWORD

在中指定的用户密码%SERVICE_USERNAME%。

SERVICE_DISPLAY_NAME

服务的名称。默认为Elasticsearch %SERVICE_ID%。

SERVICE_DESCRIPTION

服务的描述。默认为Elasticsearch Windows Service - https://elastic.co。

JAVA_HOME

要在其下运行服务的JVM的安装目录。

SERVICE_LOG_DIR

服务日志目录,默认为%ES_HOME%\logs。请注意,这并不控制Elasticsearch日志的路径。这些路径是通过设置中设置path.logs了在elasticsearch.yml配置文件中,或在命令行上。

ES_PATH_CONF

配置文件目录(其中必须包括elasticsearch.yml, jvm.options和log4j2.properties文件),默认为 %ES_HOME%\config。

ES_JAVA_OPTS

您可能想要应用的任何其他JVM系统属性。

ES_START_TYPE

服务的启动模式。可以是auto或manual(默认)。

ES_STOP_TIMEOUT

procrun等待服务正常退出的超时时间(以秒为单位)。默认为0。

从本质上讲,它elasticsearch-service.bat依赖于Apache Commons Daemon项目来安装服务。在安装服务之前设置的环境变量将被复制,并将在服务生命周期中使用。这意味着除非重新安装该服务,否则安装后对其所做的任何更改都不会被提取。

在Windows上,从命令行运行Elasticsearch或首次将Elasticsearch作为服务安装时,可以像任何其他Elasticsearch安装一样配置堆大小。要调整已安装服务的堆大小,请使用服务管理器:bin\elasticsearch-service.bat manager。

该服务会在运行时自动配置一个私有临时目录,供Elasticsearch使用。对于运行安装的用户,此私有临时目录被配置为私有临时目录的子目录。如果服务将在其他用户下运行,则可以ES_TMPDIR在执行服务安装之前通过将环境变量设置为首选位置来配置服务应使用的临时目录的位置。

使用Manager GUI
安装服务后,还可以使用管理器GUI(elasticsearch-service-mgr.exe)配置服务,该服务可深入了解已安装的服务,包括其状态,启动类型,JVM,启动和停止设置等。只需elasticsearch-service.bat manager从命令行调用即可打开管理器窗口:
Windows服务管理器GUI
通过管理器GUI进行的大多数更改(如JVM设置)都需要重新启动服务才能生效。

.zip归档的目录布局编辑
该.zip包装是完全自包含的。默认情况下,所有文件和目录都包含在其中%ES_HOME% -解压缩归档文件时创建的目录。

这非常方便,因为您无需创建任何目录即可开始使用Elasticsearch,并且卸载Elasticsearch就像删除%ES_HOME%目录一样容易。但是,建议更改配置目录,数据目录和日志目录的默认位置,以便以后不再删除重要数据。

类型 描述 默认位置 设置

Elasticsearch主目录或 %ES_HOME%

通过解压缩存档创建目录

箱子

二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件

%ES_HOME%\bin

conf

配置文件包括 elasticsearch.yml

%ES_HOME%\config

ES_PATH_CONF

数据

节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。

%ES_HOME%\data

path.data

日志

日志文件位置。

%ES_HOME%\logs

path.logs

外挂程式

插件文件位置。每个插件将包含在一个子目录中。

%ES_HOME%\plugins

回购

共享文件系统存储库位置。可以容纳多个位置。可以将文件系统存储库放置在此处指定的任何目录的任何子目录中。

未配置

path.repo

下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

使用Debian软件包安装Elasticsearch

可以从我们的网站 或APT存储库下载用于Elasticsearch的Debian软件包。它可用于在任何基于Debian的系统(例如Debian和Ubuntu)上安装Elasticsearch。

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

最新的稳定版本的Elasticsearch可以在“ 下载Elasticsearch”页面上找到 。其他版本可以在“ 过去发行版”页面上找到。

Elasticsearch需要Java 8或更高版本。使用 官方的Oracle发行版 或开源发行版(例如OpenJDK)。

导入Elasticsearch PGP密钥编辑
我们使用带有指纹的Elasticsearch签名密钥(PGP密钥D88E42B4,可从https://pgp.mit.edu获得)对所有软件包进行签名 :

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装公共签名密钥:

wget - qO - https :// 工件。弹性的。co / GPG - KEY - elasticsearch | 命令和apt - 键添加-
从APT存储库安装编辑
apt-transport-https在继续之前,您可能需要在Debian 上安装软件包:

命令和apt - get安装容易- 运输- HTTPS
将存储库定义保存到 /etc/apt/sources.list.d/elastic-6.x.list:

回声“ deb https://artifacts.elastic.co/packages/6.x/apt稳定主” | 须藤发球- 一/ 等/ 易/ 来源。清单。d / 弹性- 6.x的。清单
这些说明由于add-apt-repository以下几个原因而没有使用:

add-apt-repository将条目添加到系统/etc/apt/sources.list文件中,而不是添加到每个存储库中干净的文件中/etc/apt/sources.list.d
add-apt-repository 在许多发行版中不是默认安装的一部分,并且需要许多非默认依赖项。
较旧的版本add-apt-repository始终会添加一个deb-src条目,这会导致错误,因为我们没有提供源包。如果您添加了deb-src条目,则在删除该deb-src行之前,您将看到类似以下的错误:

在发布文件中找不到预期的条目“ main / source / Sources”
(错误的sources.list条目或格式错误的文件)
您可以使用以下命令安装Elasticsearch Debian软件包:

命令和apt - get的更新&& 命令和apt - get安装elasticsearch
如果同一Elasticsearch存储库存在两个条目,那么您将在以下期间看到如下错误apt-get update:

重复的sources.list条目https://artifacts.elastic.co/packages/6.x/apt/ …
检查/etc/apt/sources.list.d/elasticsearch-6.x.list重复的条目或在其中的文件/etc/apt/sources.list.d/和文件中找到重复的条目/etc/apt/sources.list。

在基于systemd的发行版上,安装脚本将尝试设置内核参数(例如 vm.max_map_count)。您可以通过掩盖systemd-sysctl.service单元来跳过此步骤。

也可以使用仅包含Apache 2.0许可下可用功能的替代软件包。要安装它,请使用以下资源列表:

回声“的deb https://artifacts.elastic.co/packages/oss-6.x/apt稳定的主” | 须藤发球- 一/ 等/ 易/ 来源。清单。d / 弹性- 6.x的。清单
手动下载并安装Debian软件包编辑
可以从网站上下载用于Elasticsearch v6.8.12的Debian软件包,并按以下方式安装:

wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.deb
wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.deb 。sha512
shasum - 一个512 - çelasticsearch - 6.8 。12.deb 。sha512
sudo dpkg - i elasticsearch - 6.8 。12.deb

比较下载的Debian软件包的SHA和应该输出的已发布校验和 elasticsearch-{version}.deb: OK。

或者,您可以下载以下软件包,其中仅包含Apache 2.0许可下可用的功能:https : //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.12.deb

启用自动创建X-Pack索引编辑
X-Pack将尝试在Elasticsearch中自动创建多个索引。默认情况下,Elasticsearch配置为允许自动创建索引,并且不需要其他步骤。但是,如果你有Elasticsearch禁用自动创建索引,你必须配置 action.auto_create_index的elasticsearch.yml,让X-包创建以下指标:

行动。auto_create_index:.monitoring * 、. watches,.triggered_watches,.watcher - history * 、. ml *
如果使用Logstash 或Beats,则很可能需要在action.auto_create_index设置中使用其他索引名称,而确切的值将取决于本地配置。如果不确定环境的正确值,可以考虑将值设置为 *允许自动创建所有索引的值。

SysV init与systemd编辑
安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统是使用SysV init还是 systemd(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:

ps - p 1
使用SysV运行Elasticsearch init编辑
使用update-rc.d命令将Elasticsearch配置为在系统启动时自动启动:

更新执行sudo - RC 。d elasticsearch默认值95 10
可以使用以下service命令启动和停止Elasticsearch :

须藤- 我的服务elasticsearch启动
须藤- 我的服务elasticsearch停止
如果Elasticsearch由于任何原因启动失败,它将把失败原因打印到STDOUT。日志文件可以在中找到/var/log/elasticsearch/。

使用运行Elasticsearch systemd编辑
要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo / bin / systemctl守护程序- 重新加载
sudo / bin / systemctl启用elasticsearch 。服务
Elasticsearch可以按以下方式启动和停止:

sudo systemctl启动elasticsearch 。服务
sudo systemctl停止elasticsearch 。服务
这些命令不提供有关Elasticsearch是否成功启动的反馈。而是将这些信息写入位于中的日志文件中/var/log/elasticsearch/。

默认情况下,Elasticsearch服务不会在日志中记录信息systemd 。要启用journalctl日志记录,–quiet必须从文件的ExecStart命令行中删除该选项elasticsearch.service。

当systemd启用了日志记录,日志信息使用可用journalctl的命令:

尾随日记:

须藤journalctl - f
列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch
要从给定时间开始列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch - 因为 “2016年10月30日18时17分16秒”
检查man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html了解更多命令行选项。

检查Elasticsearch是否正在运行编辑
您可以测试你的Elasticsearch节点通过发送一个HTTP请求的端口上运行9200上localhost:

GET /
复制为cURL
在控制台中查看

应该会给您这样的答复:

{ “名” :“Cp8oag6” ,“CLUSTER_NAME” :“elasticsearch” ,“cluster_uuid” :“AT69_T_DTp-1qgIJlatQqA” ,“版本” :{ “数字” :“6.8.12” ,“build_flavor” :“默认” ,“ build_type” :“ zip” ,“ build_hash” :“ f27399d” ,“ build_date” :“ 2016-03-30T09:51:41.449Z” ,“ build_snapshot”:false ,“ lucene_version” :“ 7.7.3” ,

“ minimum_wire_compatibility_version” :“ 1.2.3” ,“ minimum_index_compatibility_version” :“ 1.2.3” },“标语” :“您知道,要搜索”“ }  

配置Elasticsearch编辑
Elasticsearch默认使用/etc/elasticsearch进行运行时配置。此目录的所有权和该目录中所有文件的所有权root:elasticsearch在软件包安装时设置为 ,并且该目录已setgid 设置了标志,因此在该目录下/etc/elasticsearch 创建的任何文件和子目录也都以此所有权创建(例如,如果使用密钥库创建了密钥库)工具)。预计将对此进行维护,以便Elasticsearch进程可以通过组权限读取此目录下的文件。

/etc/elasticsearch/elasticsearch.yml默认情况下,Elasticsearch从文件中加载其配置 。该配置文件的格式在配置Elasticsearch中进行了说明。

Debian软件包还具有系统配置文件(/etc/default/elasticsearch),该文件可让您设置以下参数:

JAVA_HOME

设置要使用的自定义Java路径。

MAX_OPEN_FILES

最大打开文件数,默认为65535。

MAX_LOCKED_MEMORY

最大锁定内存大小。unlimited如果使用bootstrap.memory_lockelasticsearch.yml中的选项,则 设置为。

MAX_MAP_COUNT

一个进程可能具有的最大内存映射区域数。如果mmapfs 用作索引存储类型,请确保将其设置为较高的值。欲了解更多信息,请查看 Linux内核文件 有关max_map_count。这是通过sysctl在启动Elasticsearch之前设置的。默认为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 文件来配置系统资源限制。有关更多信息,请参见Systemd配置。

Debian软件包的目录布局编辑
Debian软件包将配置文件,日志和数据目录放置在基于Debian的系统的适当位置:

类型 描述 默认位置 设置

Elasticsearch主目录或 $ES_HOME

/usr/share/elasticsearch

箱子

二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件

/usr/share/elasticsearch/bin

conf

配置文件包括 elasticsearch.yml

/etc/elasticsearch

ES_PATH_CONF

conf

环境变量包括堆大小,文件描述符。

/etc/default/elasticsearch

数据

节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。

/var/lib/elasticsearch

path.data

日志

日志文件位置。

/var/log/elasticsearch

path.logs

外挂程式

插件文件位置。每个插件将包含在一个子目录中。

/usr/share/elasticsearch/plugins

回购

共享文件系统存储库位置。可以容纳多个位置。可以将文件系统存储库放置在此处指定的任何目录的任何子目录中。

未配置

path.repo

下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

使用RPM安装Elasticsearch

可以从我们的网站 或我们的RPM存储库中下载 Elasticsearch 的 RPM。它可用于在任何基于RPM的系统上安装Elasticsearch,例如OpenSuSE,SLES,Centos,Red Hat和Oracle Enterprise。

使用RPM的旧版本(例如SLES 11和CentOS 5)的发行版不支持RPM安装。请参阅使用.zip或.tar.gz代替安装Elasticsearch。

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

最新的稳定版本的Elasticsearch可以在“ 下载Elasticsearch”页面上找到 。其他版本可以在“ 过去发行版”页面上找到。

Elasticsearch需要Java 8或更高版本。使用 官方的Oracle发行版 或开源发行版(例如OpenJDK)。

导入Elasticsearch PGP密钥编辑
我们使用带有指纹的Elasticsearch签名密钥(PGP密钥D88E42B4,可从https://pgp.mit.edu获得)对所有软件包进行签名 :

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装公共签名密钥:

转- 进口的https :// 文物。弹性的。co / GPG - KEY - elasticsearch
从RPM存储库安装编辑
elasticsearch.repo在/etc/yum.repos.d/基于RedHat的发行版的/etc/zypp/repos.d/目录中或在基于OpenSuSE的发行版的目录中创建一个文件,其中包含:

[ elasticsearch - 6.x中]
名称= Elasticsearch 库的6.x的包
baseurl = https :// 工件。弹性的。co / 包/ 6.x / 百胜
gpgcheck = 1
gpgkey = https :// 工件。弹性的。co / GPG - KEY - elasticsearch
已启用= 1
自动刷新= 1
类型= rpm - md
您的存储库就可以使用了。您现在可以使用以下命令之一安装Elasticsearch:

须藤百胜安装elasticsearch
须藤dnf安装elasticsearch
须藤zypper安装elasticsearch

使用yum在CentOS和老年红帽基于分布。

使用dnf的Fedora和其他新的Red Hat分发。

使用zypper基于分布的OpenSUSE

也可以使用仅包含Apache 2.0许可下可用功能的替代软件包。要安装它,请baseurl在elasticsearch.repo文件中使用以下命令:

baseurl = https :// 工件。弹性的。co / 包/ oss - 6.x / 百胜
手动下载并安装RPM编辑
可以从网站上下载和安装Elasticsearch RPM v6.8.12,如下所示:

wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.rpm
wget https :// 工件。弹性的。合作/ 下载/ elasticsearch / elasticsearch - 6.8 。12.rpm 。sha512
shasum - 一个512 - çelasticsearch - 6.8 。12.rpm 。sha512
RPM执行sudo - 安装elasticsearch - 6.8 。12.转

比较下载的RPM的SHA和应该输出的已发布校验和 elasticsearch-{version}.rpm: OK。

或者,您可以下载以下软件包,该软件包仅包含Apache 2.0许可下可用的功能:https : //artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-6.8.12.rpm

在基于systemd的发行版上,安装脚本将尝试设置内核参数(例如 vm.max_map_count)。您可以通过掩盖systemd-sysctl.service单元来跳过此步骤。

启用自动创建X-Pack索引编辑
X-Pack将尝试在Elasticsearch中自动创建多个索引。默认情况下,Elasticsearch配置为允许自动创建索引,并且不需要其他步骤。但是,如果你有Elasticsearch禁用自动创建索引,你必须配置 action.auto_create_index的elasticsearch.yml,让X-包创建以下指标:

行动。auto_create_index:.monitoring * 、. watches,.triggered_watches,.watcher - history * 、. ml *
如果使用Logstash 或Beats,则很可能需要在action.auto_create_index设置中使用其他索引名称,而确切的值将取决于本地配置。如果不确定环境的正确值,可以考虑将值设置为 *允许自动创建所有索引的值。

SysV init与systemd编辑
安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统是使用SysV init还是 systemd(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:

ps - p 1
使用SysV运行Elasticsearch init编辑
使用chkconfig命令将Elasticsearch配置为在系统启动时自动启动:

须藤chkconfig的- 附加elasticsearch
可以使用以下service命令启动和停止Elasticsearch :

须藤- 我的服务elasticsearch启动
须藤- 我服务elasticsearch停止
如果Elasticsearch由于任何原因启动失败,它将把失败原因打印到STDOUT。日志文件可以在中找到/var/log/elasticsearch/。

使用运行Elasticsearch systemd编辑
要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo / bin / systemctl守护程序- 重新加载
sudo / bin / systemctl启用elasticsearch 。服务
Elasticsearch可以按以下方式启动和停止:

sudo systemctl启动elasticsearch 。服务
sudo systemctl停止elasticsearch 。服务
这些命令不提供有关Elasticsearch是否成功启动的反馈。而是将这些信息写入位于中的日志文件中/var/log/elasticsearch/。

默认情况下,Elasticsearch服务不会在日志中记录信息systemd 。要启用journalctl日志记录,–quiet必须从文件的ExecStart命令行中删除该选项elasticsearch.service。

当systemd启用了日志记录,日志信息使用可用journalctl的命令:

尾随日记:

须藤journalctl - f
列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch
要从给定时间开始列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch - 因为 “二○一六年十月三十〇日十八时17分16秒”
检查man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html了解更多命令行选项。

检查Elasticsearch是否正在运行编辑
您可以测试你的Elasticsearch节点通过发送一个HTTP请求的端口上运行9200上localhost:

GET /
复制为cURL
在控制台中查看

应该会给您这样的答复:

{ “名” :“Cp8oag6” ,“CLUSTER_NAME” :“elasticsearch” ,“cluster_uuid” :“AT69_T_DTp-1qgIJlatQqA” ,“版本” :{ “数字” :“6.8.12” ,“build_flavor” :“默认” ,“ build_type” :“ zip” ,“ build_hash” :“ f27399d” ,“ build_date” :“ 2016-03-30T09:51:41.449Z” ,“ build_snapshot”:false ,“ lucene_version” :“ 7.7.3” ,

“ minimum_wire_compatibility_version” :“ 1.2.3” ,“ minimum_index_compatibility_version” :“ 1.2.3” },“标语” :“您知道,要搜索”“ }  

配置Elasticsearch编辑
Elasticsearch默认使用/etc/elasticsearch进行运行时配置。此目录的所有权和该目录中所有文件的所有权root:elasticsearch在软件包安装时设置为 ,并且该目录已setgid 设置了标志,因此在该目录下/etc/elasticsearch 创建的任何文件和子目录也都以此所有权创建(例如,如果使用keystore创建了keystore工具)。预计将对此进行维护,以便Elasticsearch进程可以通过组权限读取此目录下的文件。

/etc/elasticsearch/elasticsearch.yml默认情况下,Elasticsearch从文件中加载其配置 。该配置文件的格式在配置Elasticsearch中进行了说明。

RPM还具有一个系统配置文件(/etc/sysconfig/elasticsearch),可用于设置以下参数:

JAVA_HOME

设置要使用的自定义Java路径。

MAX_OPEN_FILES

最大打开文件数,默认为65535。

MAX_LOCKED_MEMORY

最大锁定内存大小。unlimited如果使用bootstrap.memory_lockelasticsearch.yml中的选项,则 设置为。

MAX_MAP_COUNT

一个进程可能具有的最大内存映射区域数。如果mmapfs 用作索引存储类型,请确保将其设置为较高的值。欲了解更多信息,请查看 Linux内核文件 有关max_map_count。这是通过sysctl在启动Elasticsearch之前设置的。默认为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 文件来配置系统资源限制。有关更多信息,请参见Systemd配置。

RPM的目录布局编辑
RPM将配置文件,日志和数据目录放置在基于RPM的系统的适当位置:

类型 描述 默认位置 设置

Elasticsearch主目录或 $ES_HOME

/usr/share/elasticsearch

箱子

二进制脚本,包括elasticsearch启动节点和elasticsearch-plugin安装插件

/usr/share/elasticsearch/bin

conf

配置文件包括 elasticsearch.yml

/etc/elasticsearch

ES_PATH_CONF

conf

环境变量包括堆大小,文件描述符。

/etc/sysconfig/elasticsearch

数据

节点上分配的每个索引/分片的数据文件的位置。可以容纳多个位置。

/var/lib/elasticsearch

path.data

日志

日志文件位置。

/var/log/elasticsearch

path.logs

外挂程式

插件文件位置。每个插件将包含在一个子目录中。

/usr/share/elasticsearch/plugins

回购

共享文件系统存储库位置。可以容纳多个位置。可以将文件系统存储库放置在此处指定的任何目录的任何子目录中。

未配置

path.repo

下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

使用Windows MSI安装程序安装Elasticsearch

此功能处于beta版本,可能会更改。该设计和代码不如正式的GA功能成熟,并且按原样提供,不提供任何担保。Beta功能不受官方GA功能的支持SLA约束。

可以使用该.msi软件包在Windows上安装Elasticsearch 。这可以将Elasticsearch安装为Windows服务,或者允许使用随附的elasticsearch.exe可执行文件手动运行它。

过去,Elasticsearch使用.zip存档安装在Windows上。.zip如果愿意,可以继续使用该方法。

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

最新的稳定版本的Elasticsearch可以在“ 下载Elasticsearch”页面上找到 。其他版本可以在“ 过去发行版”页面上找到 。

Elasticsearch需要Java 8或更高版本。使用 官方的Oracle发行版 或开源发行版(例如OpenJDK)。

下载.msi包编辑
.msi从https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.12.msi下载Elasticsearch v6.8.12软件包

使用图形用户界面(GUI)安装编辑
双击下载的.msi软件包以启动GUI向导,该向导将指导您完成安装过程。您可以通过单击?按钮查看任何步骤的帮助,该按钮会显示一个旁的面板,其中包含每个输入的其他信息:

MSI安装程序帮助
在第一个屏幕中,选择安装目录。此外,选择将放置数据,日志和配置的目录,或使用默认位置:

msi安装程序位置
然后选择是作为服务安装还是根据需要手动启动Elasticsearch。作为服务安装时,您还可以配置Windows帐户以运行服务,以及是否应在安装后启动服务以及Windows的启动行为:

msi安装程序服务
选择用于运行服务的Windows帐户时,请确保所选帐户具有足够的特权来访问所选的安装目录和其​​他部署目录。另外,请确保该帐户能够运行Windows服务。

常用配置设置显示在“配置”部分中,除了内存和网络设置外,还允许设置群集名称,节点名称和角色:

msi安装程序配置
可以在安装过程中下载和安装的通用插件列表,并可以配置用于下载这些插件的HTTPS代理。

确保安装机器可以访问Internet,并且已将所有公司防火墙配置为允许从artifacts.elastic.co以下位置下载:

msi安装程序选择的插件
从6.3.0版开始,默认情况下捆绑了 X-Pack 。除了安全配置和内置用户配置之外,最后一步还允许选择要安装的许可证类型:

msi安装程序xpack
X-Pack包括试用版或基本版许可。试用许可证的有效期为30天,之后您可以获取可用的订阅之一。基本许可证是免费且永久的。有关可用许可下可用功能的更多详细信息,请咨询 可用的订阅。

单击安装按钮后,将开始安装:

msi安装程序安装
…,并指出何时成功安装:

msi安装程序成功
使用命令行安装编辑
该.msi还可以使用命令行安装Elasticsearch。最简单的安装使用与GUI相同的默认设置,方法是先导航到下载目录,然后运行:

MSIEXEC 。exe / i elasticsearch - 6.8 。12.msi / qn
默认情况下,msiexec.exe由于它在Windows子系统中运行,因此不等待安装过程完成。要等待过程完成并确保%ERRORLEVEL%已相应设置,建议使用start /wait创建一个过程并等待其退出

启动/ 等待msiexec 。exe / i elasticsearch - 6.8 。12.msi / qn
与任何MSI安装软件包一样,可以在%TEMP%目录中找到安装过程的日志文件,该文件的格式遵循随机生成的名称 MSI.LOG。可以使用/l命令行参数提供日志文件的路径

启动/ 等待msiexec 。exe / i elasticsearch - 6.8 。12.msi / qn / l安装。日志
可以使用以下命令查看受支持的Windows Installer命令行参数

MSIEXEC 。exe / 帮助
…或咨询Windows Installer SDK命令行选项。

命令行选项编辑
GUI中公开的所有设置也可用作命令行参数(在Windows Installer文档中称为属性),可以传递给msiexec.exe:

INSTALLDIR

安装目录。路径中的最终目录必须 是Elasticsearch的版本。默认为%ProgramW6432%\Elastic\Elasticsearch\6.8.12。

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

Windows服务是否在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。默认为""

要传递值,只需使用格式将属性名称和值附加 =""到安装命令即可。例如,使用与默认目录不同的安装目录:

启动/ 等待msiexec 。exe / i elasticsearch - 6.8 。12.msi / qn INSTALLDIR = “ C:\ Custom Install Directory {version}”
有关 与包含引号的值相关的其他规则,请查阅Windows Installer SDK命令行选项。

启用自动创建X-Pack索引编辑
Elastic Stack功能尝试在Elasticsearch中自动创建多个索引。默认情况下,Elasticsearch配置为允许自动创建索引,并且不需要其他步骤。但是,如果你有Elasticsearch禁用自动创建索引,你必须配置 action.auto_create_index的elasticsearch.yml,让X-包创建以下指标:

行动。auto_create_index:.monitoring * 、. watches,.triggered_watches,.watcher - history * 、. ml *
如果使用Logstash 或Beats,则很可能需要在action.auto_create_index设置中使用其他索引名称,而确切的值将取决于本地配置。如果不确定环境的正确值,可以考虑将值设置为 *允许自动创建所有索引的值。

从命令行运行Elasticsearch编辑
一旦安装,Elasticsearch可以从命令行启动(如果未作为服务安装)并配置为在安装完成时启动,如下所示:

。\ b 在\ elasticsearch 。可执行程序
命令行终端将显示类似于以下内容的输出:

弹性搜索程序
默认情况下,Elasticsearch在前台运行,STDOUT除了打印其中的.log文件外,还将其日志打印到LOGSDIRECTORY,可以通过按停止Ctrl-C。

在命令行上配置Elasticsearch编辑
%ES_PATH_CONF%\elasticsearch.yml 默认情况下,Elasticsearch从文件中加载其配置。该配置文件的格式在配置Elasticsearch中进行了说明 。

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

。\ b 在\ elasticsearch 。exe - E群集。名称= my_cluster - E节点。名称= node_1
包含空格的值必须用引号引起来。例如-E path.logs=“C:\My Logs\logs”。

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

检查Elasticsearch是否正在运行编辑
您可以测试你的Elasticsearch节点通过发送一个HTTP请求的端口上运行9200上localhost:

GET /
复制为cURL
在控制台中查看

应该会给您这样的答复:

{ “名” :“Cp8oag6” ,“CLUSTER_NAME” :“elasticsearch” ,“cluster_uuid” :“AT69_T_DTp-1qgIJlatQqA” ,“版本” :{ “数字” :“6.8.12” ,“build_flavor” :“默认” ,“ build_type” :“ zip” ,“ build_hash” :“ f27399d” ,“ build_date” :“ 2016-03-30T09:51:41.449Z” ,“ build_snapshot”:false ,“ lucene_version” :“ 7.7.3” ,

“ minimum_wire_compatibility_version” :“ 1.2.3” ,“ minimum_index_compatibility_version” :“ 1.2.3” },“标语” :“您知道,要搜索”“ }  

在Windows上安装Elasticsearch即服务编辑
Elasticsearch可以作为服务安装在后台运行,也可以在启动时自动启动,而无需任何用户交互。这可以在安装时使用以下命令行选项来实现

INSTALLASSERVICE=true
STARTAFTERINSTALL=true
STARTWHENWINDOWSSTARTS=true
安装后,Elasticsearch将出现在“服务”控制面板中:

msi安装程序安装服务
可以从控制面板内或从命令行使用以下命令停止和重新启动:

使用命令提示符:

sc 。exe停止Elasticsearch
sc 。exe启动Elasticsearch
使用PowerShell:

获取- 服务Elasticsearch | 停止- 服务获取- 服务Elasticsearch | 开始- 服务

可以更改jvm.options和elasticsearch.yml配置文件以在安装后配置服务。大多数更改(例如JVM设置)都需要重新启动服务才能生效。

使用图形用户界面(GUI)进行升级编辑
该.msi软件包支持将已安装的Elasticsearch版本升级到新版本。通过GUI进行的升级过程可处理所有已安装插件的升级,以及保留您的数据和配置。

下载并双击该.msi程序包的较新版本将启动GUI向导。第一步将列出先前安装中的只读属性:

微星安装程序升级通知
下一步允许更改某些配置选项:

msi安装程序升级配置
最后,“插件”步骤允许升级或删除当前安装的插件,并下载和安装当前未安装的插件:

msi安装程序升级插件
使用命令行升级编辑
该.msi还可以使用命令行升级Elasticsearch。

命令行升级要求传递与第一次安装时使用的命令行属性相同的命令行属性;Windows Installer不会记住这些属性。

例如,如果最初使用命令行选项PLUGINS="ingest-geoip"和 安装,则从命令行LOCKMEMORY="true"执行升级时必须传递这些相同的值。

在例外的情况是该INSTALLDIR参数(如果原先指定的),它必须是一个不同的目录到当前安装。如果设置INSTALLDIR,则路径中的最终目录必须是Elasticsearch的版本,例如

C:\Program Files\Elastic\Elasticsearch\6.8.12

假设使用所有默认值安装了Elasticsearch,最简单的升级是通过首先导航到下载目录,然后运行:

启动/ 等待msiexec 。exe / i elasticsearch - 6.8 。12.msi / qn
与安装过程类似,可以使用/l命令行参数传递升级过程的日志文件路径。

启动/ 等待msiexec 。exe / i elasticsearch - 6.8 。12.msi / qn / l升级。日志
使用添加/删除程序卸载编辑
该.msi软件包可以处理所有在安装过程中添加的目录和文件的卸载。

卸载将删除安装过程中创建的所有内容,但data,config或logs目录除外。建议您在升级之前制作数据目录的副本,或者考虑使用快照API。

MSI安装程序包不提供用于卸载的GUI。可以通过按Windows键并键入add or remove programs以打开系统设置来卸载已安装的程序。

打开后,在已安装的应用程序列表中找到Elasticsearch安装,单击并选择Uninstall:

msi安装程序卸载
这将启动卸载过程。

使用命令行卸载编辑
也可以通过在命令行中导航到包含该.msi软件包的目录并运行以下命令来执行卸载:

启动/ 等待msiexec 。exe / x elasticsearch - 6.8版。12.msi / qn
与安装过程类似,可以使用/l命令行参数传递用于卸载过程的日志文件的路径。

启动/ 等待msiexec 。exe / x elasticsearch - 6.8版。12.msi / qn / l卸载。日志
下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

使用Docker安装Elasticsearch

Elasticsearch也可以作为Docker映像使用。这些图像使用centos:7作为基础图像。

所有已发布的Docker映像和标签的列表可在 www.docker.elastic.co中找到。源文件位于 Github中。

这些图像在Elastic许可下可免费使用。它们包含开放源代码和免费的商业功能以及对付费商业功能的访问。 开始30天试用,以试用所有付费商业功能。有关弹性许可级别的信息,请参阅“ 订阅”页面。

拉图像编辑
获取适用于Docker的Elasticsearch就像docker pull对Elastic Docker注册表发出命令一样简单。

码头工人拉码头工人。弹性的。合作/ 弹性搜索/ 弹性搜索:6.8 。12
或者,您可以下载其他Docker映像,这些映像仅包含Apache 2.0许可下可用的功能。要下载图像,请访问 www.docker.elastic.co。

从命令行运行Elasticsearch编辑
开发模式编辑
可以使用以下命令快速启动Elasticsearch以进行开发或测试:

docker run - p 9200 :9200 - p 9300 :9300 - e “ discovery.type =单节点” docker 。弹性的。合作/ 弹性搜索/ 弹性搜索:6.8 。12
生产方式编辑
该vm.max_map_count内核设置需要至少设置为262144用于生产。取决于您的平台:

的Linux

该vm.max_map_count设置应该在/etc/sysctl.conf中永久设置:

$ grep vm 。max_map_count / etc / sysctl 。conf
VM 。max_map_count = 262144
要将设置应用于实时系统类型: sysctl -w vm.max_map_count=262144

macOS和Docker for Mac

该vm.max_map_count设置必须在xhyve虚拟机中设置:

$屏幕〜/ 库/ 容器/ com 。泊坞窗。泊坞窗/ 数据/ 虚拟机/ 0 / tty
只需按Enter并sysctl像在Linux上那样配置设置即可:

sysctl的- w ^ VM 。max_map_count = 262144
Windows和macOS与Docker Toolbox

该vm.max_map_count设置必须通过docker-machine设置:

码头工人- 机器SSH
须藤的sysctl - W¯¯VM 。max_map_count = 262144
以下示例显示了一个包含两个Elasticsearch节点的集群。要启动集群,请使用 docker-compose.yml和,只需键入:

码头工人- 组成
docker-compose在Linux上未预安装Docker。可以在Docker Compose页面上找到安装它的说明 。

节点elasticsearch上侦听localhost:9200,而elasticsearch2 谈判elasticsearch在泊坞网络。

此示例还使用了 Docker命名的volume,名为esdata1和esdata2,如果不存在则将创建它们。

docker-compose.yml:

版本:‘2.2’ 服务:
elasticsearch:
图片:docker.elastic.co/elasticsearch/elasticsearch :6.8.12
CONTAINER_NAME:elasticsearch
环境:

  • cluster.name =泊坞窗- 集群
    - bootstrap.memory_lock =真
    - “ES_JAVA_OPTS = -Xms512m - Xmx512m” ulimits:
    MEMLOCK:
    柔软:- 1
    硬:- 1
    卷:

  • esdata1 :在/ usr /共享/ elasticsearch /数据
    端口:

  • 9200 :9200

                           网络:
    
  • esnet
    elasticsearch2:
    图像:docker.elastic.co/elasticsearch/elasticsearch :6.8.12
    CONTAINER_NAME:elasticsearch2
    环境:

  • cluster.name =搬运工- 簇
    - bootstrap.memory_lock =真
    - “ES_JAVA_OPTS = -Xms512m -Xmx512m” - “discovery.zen.ping.unicast.hosts = elasticsearch” ulimits:
    MEMLOCK:
    软:- 1
    硬:- 1
    卷:

  • esdata2 :在/ usr /共享/ elasticsearch /数据

                     网络:
    
  • esnet

卷:
esdata1:
驱动程序:本地
esdata2:
驱动程序:本地

网络:
esnet :
要停止群集,请键入docker-compose down。数据量将保持不变,因此可以使用使用相同的数据再次启动集群 docker-compose up。要销毁群集和数据量,只需键入 docker-compose down -v。

检查集群状态:编辑
卷曲的http ://127.0.0.1:9200/_cat/health 1472225929 15 :38 :49 搬运工- 簇绿色2 2 4 2 0 0 0 0 - 100.0 %

日志消息进入控制台,并由配置的Docker日志记录驱动程序处理。默认情况下,您可以使用访问日志docker logs。

使用Docker配置Elasticsearch编辑
Elasticsearch从下的文件加载其配置/usr/share/elasticsearch/config/。这些配置文件在配置Elasticsearch和设置JVM选项中记录。

该映像提供了几种用于配置Elasticsearch设置的方法,而传统方法是提供自定义文件,即 elasticsearch.yml。也可以使用环境变量来设置选项:

A.通过Docker环境变量显示参数编辑
例如,要定义集群名称,docker run您可以通过 -e “cluster.name=mynewclustername”。必须使用双引号。

B.绑定安装配置编辑
创建您的自定义配置文件,并将其安装在映像的相应文件上。例如结合安装一custom_elasticsearch.yml与docker run可与参数来完成:

  • v full_path_to / custom_elasticsearch 。yml :/ usr / share / elasticsearch / config / elasticsearch 。yml
    容器使用uid:gid 以用户身份运行Elasticsearchelasticsearch1000:1000。此用户需要访问绑定的已安装主机目录和文件(例如custom_elasticsearch.yml上述 文件)。对于数据目录和日志目录,例如,也需要写访问权限。另请参见下面的注释1。/usr/share/elasticsearch/data

C.定制图片编辑
在某些环境中,准备包含您的配置的自定义映像可能更有意义。一个Dockerfile实现,这可能是简单的:

从泊坞窗。弹性的。合作/ 弹性搜索/ 弹性搜索:6.8 。12
COPY - chown = elasticsearch :elasticsearch elasticsearch 。yml / usr / share / elasticsearch / config /
然后,您可以使用以下方法构建并尝试使用该图像:

搬运工构建- 标签= elasticsearch - 定制。
搬运工运行- TI - v / USR / 股/ elasticsearch / 数据elasticsearch - 自定义
一些插件需要其他安全权限。您必须显式地接受它们,或者tty在运行Docker映像时附加一个,然后在提示时接受,或者单独检查安全权限,如果您愿意,–batch可以在插件安装命令中添加标志。有关 更多详细信息,请参见插件管理文档。

D.覆盖图像的默认CMD编辑
通过覆盖图像的默认命令,可以将选项作为命令行选项传递给Elasticsearch进程。例如:

搬运工运行< 各种参数> 仓/ elasticsearch - Ecluster 。名称= mynewclustername
使用Elasticsearch Docker映像配置SSL / TLS编辑
请参阅在Elasticsearch Docker容器中加密通信。

生产使用说明和默认值编辑
我们已经收集了许多最佳生产实践。以下提到的任何Docker参数都假定使用docker run。

默认情况下,Elasticsearch elasticsearch使用uid:gid 作为用户在容器内运行1000:1000。

Openshift是一个例外 ,它使用任意分配的用户ID运行容器。Openshift将显示设置了gid的持久卷,0无需任何调整即可工作。

如果要绑定安装本地目录或文件,请确保该用户可读,而数据目录和日志目录还需要写访问权限。一个好的策略是授予组对gid 1000或0本地目录的访问权限。例如,准备本地目录以通过绑定安装存储数据:

mkdir esdatadir
chmod g + rwx esdatadir
chgrp 1000 esdatadir
作为最后的选择,您还可以强制容器通过环境变量更改用于数据和日志目录的任何绑定安装的所有权TAKE_FILE_OWNERSHIP。在这种情况下,它们将由uid:gid拥有,并根据需要1000:0提供对Elasticsearch进程的读/写访问。

确保增加nofile 和nproc的ulimit可用于Elasticsearch容器很重要。验证 Docker守护程序的 初始化系统已将其设置为可接受的值,并根据需要在守护程序中对其进行调整,或者针对每个容器覆盖它们,例如使用docker run:

–ulimit nofile = 65535:65535
检查上述ulimit的Docker守护程序默认值的一种方法是运行:

泊坞窗运行–rm centos:7 / bin / bash -c’ulimit -Hn && ulimit -Sn && ulimit -Hu && ulimit -Su’
为了性能和节点稳定性,需要禁用交换。这可以通过Elasticsearch docs中提到的任何方法来实现 。如果您选择该 bootstrap.memory_lock: true方法,则除了通过任何配置方法memlock: true进行定义之外,您还需要ulimit,它是在Docker Daemon中定义的 或专门为容器设置的。上面在docker-compose.yml中演示了这 一点。如果使用docker run:

-e“ bootstrap.memory_lock = true” --ulimit memlock = -1:-1
该映像公开了 TCP端口9200和9300。对于群集,建议您使用随机分配已发布的端口–publish-all,除非您要为每个主机固定一个容器。
使用ES_JAVA_OPTS环境变量来设置堆大小。例如,使用16GB的使用-e ES_JAVA_OPTS="-Xms16g -Xmx16g"与docker run。请注意,尽管默认配置文件jvm.options将默认堆设置为1GB,但您在其中设置的任何值都ES_JAVA_OPTS将覆盖它。

即使您 限制对容器的内存访问,您仍然需要配置堆大小。

虽然建议通过环境变量设置堆大小,但是您也可以通过将自己的jvm.options 文件绑定安装到下进行配置/usr/share/elasticsearch/config/。Elasticsearch提供的文件包含一些重要设置,因此您应该首先jvm.options从Elasticsearch容器中获取一份副本, 然后根据需要对其进行编辑。

将您的部署固定到Elasticsearch Docker映像的特定版本。例如,docker.elastic.co/elasticsearch/elasticsearch:6.8.12。
出于生产上的原因,请始终使用/usr/share/elasticsearch/data如生产示例所示的上绑定的卷:

如果容器被杀死,elasticsearch节点的数据将不会丢失
Elasticsearch对I / O敏感,而Docker存储驱动程序对于快速I / O而言并不理想
它允许使用高级 Docker卷插件
如果使用devicemapper存储驱动程序,请确保未使用默认loop-lvm模式。将docker-engine配置为使用 direct-lvm 。
考虑通过使用其他日志记录驱动程序来集中日志。另请注意,默认的json文件日志记录驱动程序不适用于生产环境。
下一步编辑
现在,您已经建立了一个测试Elasticsearch环境。在开始进行认真的开发或使用Elasticsearch投入生产之前,您必须进行一些附加设置:

了解如何配置Elasticsearch。
配置重要的Elasticsearch设置。
配置重要的系统设置。

配置Elasticsearch

Elasticsearch具有良好的默认设置,并且只需要很少的配置。可以使用“ 群集更新设置” API 在正在运行的群集上更改大多数设置 。

配置文件应包含特定于节点的设置(例如node.name和路径),或节点必须具备的才能加入群集的设置,例如cluster.name和network.host。

配置文件位置编辑
Elasticsearch具有三个配置文件:

elasticsearch.yml 用于配置Elasticsearch
jvm.options 用于配置Elasticsearch JVM设置
log4j2.properties 用于配置Elasticsearch日志记录
这些文件位于config目录中,其默认位置取决于安装是来自归档发行版(tar.gz或 zip)还是软件包发行版(Debian或RPM软件包)。

对于存档分发,配置目录位置默认为 $ES_HOME/config。可以通过ES_PATH_CONF环境变量来更改config目录的位置, 如下所示:

ES_PATH_CONF = / 路径/ 到/ 我的/ 配置./ bin / elasticsearch
或者,您可以通过命令行或外壳配置文件来export使用ES_PATH_CONF环境变量。

对于软件包分发,config目录位置默认为 /etc/elasticsearch。config目录的位置也可以通过ES_PATH_CONF环境变量进行更改,但是请注意,在您的shell中进行设置是不够的。而是,此变量来自 /etc/default/elasticsearch(对于Debian软件包)和 /etc/sysconfig/elasticsearch(对于RPM软件包)。您将需要相应地ES_PATH_CONF=/etc/elasticsearch在这些文件之一中编辑 条目,以更改配置目录位置。

配置文件格式编辑
配置格式为YAML。这是更改数据和日志目录的路径的示例:

路径:
数据:/ var / lib / elasticsearch
日志:/ var / log / elasticsearch
设置也可以按如下方式展平:

路径。数据:/ var / lib / elasticsearch
路径。日志:/ var / log / elasticsearch
环境变量替代编辑
${…}在配置文件中用符号引用的环境变量将替换为环境变量的值。例如:

节点。名称: $ {HOSTNAME}
网络。主持人:$ {ES_NETWORK_HOST}
提示设置编辑
不建议您进行设置。请 对敏感属性值使用安全设置。并非所有设置都可以转换为使用 安全设置。

对于您不希望存储在配置文件中的设置,可以使用值 p r o m p t . t e x t 或 {prompt.text}或 prompt.text{prompt.secret}在前台启动Elasticsearch。 p r o m p t . s e c r e t 已 禁 用 回 显 , 因 此 输 入 的 值 将 不 会 显 示 在 终 端 中 ; {prompt.secret}已禁用回显,因此输入的值将不会显示在终端中; prompt.secret{prompt.text}将允许您在键入值时看到该值。例如:

节点:
名称:$ {prompt.text}
启动Elasticsearch时,将提示您输入实际值,如下所示:

输入数值为[ 节点。名称]:
如果 在设置中使用 p r o m p t . t e x t 或 {prompt.text}或 prompt.text{prompt.secret},并且该过程作为服务或在后台运行,Elasticsearch将不会启动。

环境变量的值必须是简单的字符串。使用逗号分隔的字符串提供Elasticsearch将解析为列表的值。例如,Elasticsearch将以下字符串拆分为${HOSTNAME}环境变量的值列表:

导出HOSTNAME =“ host1,host2 ”
集群和节点设置类型编辑
可以根据配置方式对群集和节点设置进行分类:

动态
您可以使用集群更新设置API在正在运行的集群上配置和更新动态设置 。

您还可以使用来在未启动或关闭的节点上本地配置动态设置elasticsearch.yml。

最好使用集群更新设置API设置动态的,集群范围的设置,并且elasticsearch.yml仅用于本地配置。使用群集更新设置API可确保所有节点上的设置都相同。如果您不小心elasticsearch.yml在不同的节点上配置了不同的设置,则可能很难注意到差异。

静态的
只能使用在未启动或关闭的节点上配置静态设置 elasticsearch.yml。

必须在集群中的每个相关节点上设置静态设置。

设置JVM选项

您几乎不需要更改Java虚拟机(JVM)选项。如果这样做,最可能的更改是设置堆大小。本文档的其余部分详细说明了如何设置JVM选项。

设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options配置文件。该文件的默认位置是config/jvm.options(从tar或zip发行版/etc/elasticsearch/jvm.options安装时)和(从Debian或RPM软件包安装时)。

如果您使用的是Elasticsearch的Docker发行版,建议您使用ES_JAVA_OPTS环境变量设置堆大小 。

此文件包含使用特殊语法的以行分隔的JVM参数列表:

仅由空格组成的行将被忽略
以开头的行#被视为注释,并被忽略

#这是一条评论
以a开头的行-被视为独立于JVM版本而应用的JVM选项

  • Xmx2g
    以数字开头,:后接a的行-被视为仅在JVM版本与该数字匹配时才适用的JVM选项

8 :-Xmx2g
以数字开头,-后跟有a的行:被视为JVM选项,仅在JVM版本大于或等于该数字时才适用

8 -:- Xmx2g
以数字开头,-后跟数字,后跟数字的行:被视为JVM选项,仅当JVM版本在两个数字范围内时才适用

8 - 9 : - Xmx2g
其他所有行均被拒绝
您可以将自定义JVM标志添加到此文件,然后将此配置签入版本控制系统。

设置Java虚拟机选项的另一种机制是通过 ES_JAVA_OPTS环境变量。例如:

导出ES_JAVA_OPTS = “ $ ES_JAVA_OPTS -Djava.io.tmpdir = / path / to / temp / dir” ./ bin / elasticsearch
使用RPM或Debian软件包时,ES_JAVA_OPTS可以在系统配置文件中指定 。

JVM具有用于观察JAVA_TOOL_OPTIONS 环境变量的内置机制。我们有意在打包脚本中忽略此环境变量。这样做的主要原因是,在某些操作系统(例如Ubuntu)上,默认情况下通过此环境变量安装了代理,我们不希望它们干扰Elasticsearch。

此外,其他一些Java程序也支持JAVA_OPTS环境变量。这不是 JVM内置的机制,而是生态系统中的约定。但是,我们不支持此环境变量,而是通过上述jvm.options文件或环境变量来支持设置JVM选项ES_JAVA_OPTS。

安全设置

某些设置是敏感的,仅依靠文件系统权限来保护其值是不够的。对于此用例,Elasticsearch提供了密钥库和elasticsearch-keystore用于管理密钥库中设置的工具。

此处的所有命令都应以运行Elasticsearch的用户身份运行。

设计仅从密钥库中读取某些设置。但是,密钥库没有验证来阻止不支持的设置。将不支持的设置添加到密钥库将导致Elasticsearch无法启动。请参阅每个设置的文档,以了解是否将其作为密钥库的一部分来支持。

仅在重新启动Elasticsearch之后,对密钥库的所有修改才会生效。

elasticsearch密钥库当前仅提供混淆。将来将添加密码保护。

这些设置与elasticsearch.yml配置文件中的常规设置一样,需要在集群中的每个节点上指定。当前,所有安全设置都是特定于节点的设置,在每个节点上必须具有相同的值。

创建密钥库编辑
要创建elasticsearch.keystore,请使用以下create命令:

斌/ elasticsearch - 密钥库创建
该文件elasticsearch.keystore将与一起创建elasticsearch.yml。

列出密钥库中的设置编辑
密钥库中的设置列表可通过以下list命令获得:

斌/ elasticsearch - 密钥库列表
添加字符串设置编辑
可以使用以下add命令来添加敏感的字符串设置,例如云插件的身份验证凭据:

bin / elasticsearch - keystore添加。设置。名字。到。组
该工具将提示您输入设置值。要通过stdin传递值,请使用–stdin标志:

猫/ 文件/ 包含/ 设置/ 值| bin / elasticsearch - keystore add - stdin 。设置。名字。到。组
添加文件设置编辑
您可以使用以下add-file命令添加敏感文件,例如云插件的身份验证密钥文件。确保将文件路径作为参数包含在设置名称之后。

斌/ elasticsearch - 密钥库添加- 文件。设置。名字。到。组/ 路径/ 例子- 文件。json
删除设定编辑
要从密钥库中删除设置,请使用以下remove命令:

bin / elasticsearch - keystore删除。设置。名字。到。去掉
升级密钥库编辑
有时,密钥库的内部格式会更改。从程序包管理器安装Elasticsearch时,将在程序包升级过程中将磁盘上的密钥库升级到新格式。在其他情况下,Elasticsearch将在节点启动期间执行此类升级。这要求Elasticsearch对包含密钥库的目录具有写权限。或者,您可以使用以下upgrade 命令手动执行此类升级:

斌/ elasticsearch - 密钥库升级
可重新加载的安全设置编辑
就像中的设置值一样elasticsearch.yml,对密钥库内容的更改不会自动应用于正在运行的elasticsearch节点。重新读取设置需要重新启动节点。但是,某些安全设置被标记为可重载。可以重新读取此类设置并将其应用到正在运行的节点上。

所有安全设置(可重新加载或不可重新加载)的值在所有群集节点上必须相同。进行所需的安全设置更改后,使用以下bin/elasticsearch-keystore add命令,调用:

POST _nodes / reload_secure_settings
复制为cURL
在控制台中查看

该API将在每个群集节点上解密并重新读取整个密钥库,但是将仅应用可重载的安全设置。直到下次重新启动,对其他设置的更改才会生效。调用返回后,重新加载已完成,这意味着依赖于这些设置的所有内部数据结构均已更改。从头开始,所有设置看起来都应该具有新值。

更改多个可重新加载的安全设置时,请在每个群集节点上修改所有这些设置,然后发出reload_secure_settings呼叫,而不是在每次修改后重新加载。

记录配置

Elasticsearch使用Log4j 2进行日志记录。可以使用log4j2.properties文件配置Log4j 2。Elasticsearch公开三个属性${sys:es.logs.base_path}, s y s : e s . l o g s . c l u s t e r n a m e 以 及 {sys:es.logs.cluster_name}以及 sys:es.logs.clustername{sys:es.logs.node_name}(如果节点名称是通过明确设置node.name),可以在配置文件中引用,以确定日志文件的位置。该属性 ${sys:es.logs.base_path}将解析为日志目录, ${sys:es.logs.cluster_name}将解析为群集名称(在默认配置中用作日志文件名的前缀), ${sys:es.logs.node_name}并将解析为节点名称(如果显式设置了节点名称)。

例如,如果你的日志目录(path.logs)是/var/log/elasticsearch和您的群集名为production然后${sys:es.logs.base_path}将解析/var/log/elasticsearch和 s y s : e s . l o g s . b a s e p a t h {sys:es.logs.base_path} sys:es.logs.basepath{sys:file.separator}${sys:es.logs.cluster_name}.log 将解析/var/log/elasticsearch/production.log。

追加器。滚动。类型= RollingFile
追加器。滚动。名称= 滚动
追加器。滚动。fileName = $ { sys :es 。日志。base_path } $ { sys :文件。分隔符} $ { sys :es 。日志。cluster_name }。日志
追加器。滚动。布局。类型= PatternLayout
追加器。滚动。布局。模式= [%d { ISO8601 }] [%-5p ] [%-25c { 1. }] [%node_name ]%标记%。- 10000m %n
追加器。滚动。filePattern = $ { sys :es 。日志。base_path } $ { sys :文件。分隔符} $ { sys :es 。日志。cluster_name }-%d { yyyy - MM - dd }-%i 。日志。z
追加器。滚动。政策。类型= 策略
附加器。滚动。政策。时间。类型= TimeBasedTriggeringPolicy
追加器。滚动。政策。时间。间隔= 1
追加器。滚动。政策。时间。调制= 真
追加器。滚动。政策。大小。类型= SizeBasedTriggeringPolicy
追加器。滚动。政策。大小。大小= 256MB
追加器。滚动。策略。类型= DefaultRolloverStrategy
附加程序。滚动。策略。fileIndex = nomax
追加器。滚动。策略。行动。类型= 删除
追加器。滚动。策略。行动。basepath = $ { sys :es 。日志。base_path }
附加器。滚动。策略。行动。条件。类型= IfFileName
追加器。滚动。策略。行动。条件。glob = $ { sys :es 。日志。cluster_name }-*
追加器。滚动。策略。行动。条件。nested_condition 。类型= IfAccumulatedFileSize
追加器。滚动。策略。行动。条件。nested_condition 。超过= 2GB

配置RollingFile附加器

登录到 /var/log/elasticsearch/production.log

将日志滚动到/var/log/elasticsearch/production-yyyy-MM-dd-i.log; 日志将在每卷上压缩并i递增

使用基于时间的滚动策略

每天滚动日志

在天数边界上对齐滚动(而不是每24小时滚动一次)

使用基于大小的滚动策略

256 MB后滚动日志

滚动日志时使用删除操作

仅删除与文件模式匹配的日志

模式是仅删除主日志

仅在我们积累了太多压缩日志后才删除

压缩日志的大小条件为2 GB

Log4j的配置解析会被任何多余的空格所混淆;如果您在此页面上复制并粘贴任何Log4j设置,或通常输入任何Log4j配置,请确保修剪所有前导和尾随空格。

请注意,您可以替换.gz为.zipin appender.rolling.filePattern以使用zip格式压缩滚动日志。如果删除.gz 扩展名,则日志在滚动时将不会被压缩。

如果要在指定时间段内保留日志文件,则可以将过渡策略与删除操作一起使用。

追加器。滚动。策略。类型= DefaultRolloverStrategy
追加器。滚动。策略。行动。类型= 删除
追加器。滚动。策略。行动。basepath = $ { sys :es 。日志。base_path }
追加器。滚动。策略。行动。条件。类型= IfFileName
追加器。滚动。策略。行动。条件。glob = $ { sys :es 。日志。cluster_name }-*
追加器。滚动。策略。行动。条件。nested_condition 。类型= IfLastModified
追加器。滚动。策略。行动。条件。nested_condition 。年龄= 7D

配置 DefaultRolloverStrategy

配置Delete用于处理翻转的操作

Elasticsearch日志的基本路径

处理过渡时适用的条件

从与glob匹配的基本路径中删除文件 ${sys:es.logs.cluster_name}-*; 这是日志文件滚动到的位置;仅删除滚动的Elasticsearch日志,而不删除过时和慢速日志,这是必需的

嵌套条件适用于与glob匹配的文件

保留日志七天

可以加载多个配置文件(在这种情况下,它们将被合并),只要它们被命名log4j2.properties并将Elasticsearch config目录作为祖先即可。这对于公开其他记录器的插件很有用。记录器部分包含Java软件包及其相应的日志级别。追加器部分包含日志的目标。在Log4j文档中可以找到有关如何自定义日志记录和所有受支持的附加程序的广泛信息 。

配置日志记录级别编辑
有四种配置日志记录级别的方法,每种方法都有适合使用的情况。

通过命令行:(-E =例如, -E logger.org.elasticsearch.transport=trace)。当您在单个节点上临时调试问题(例如,启动问题或开发过程中)时,这是最合适的。
通过elasticsearch.yml:(: 例如, logger.org.elasticsearch.transport: trace)。当您临时调试问题但未通过命令行(例如,通过服务)启动Elasticsearch或希望更永久地调整日志记录级别时,这是最合适的。
通过集群设置:

PUT / _集群/ 设置
{ “ transient” :{ “ <日志记录层次结构的名称>” :“ ” } }

例如:

PUT / _集群/ 设置{ “ transient” :{ “ logger.org.elasticsearch.transport” :“ trace” } }

复制为cURL
在控制台中查看

当您需要动态地调整正在运行的群集上的日志记录级别时,这是最合适的。

通过log4j2.properties:

记录器。< unique_identifier >。名= < 名的记录层次>
记录器。< unique_identifier >。级别= <级别>
例如:

记录器。运输。名称= org 。弹性搜索。运输
记录器。运输。级别= 跟踪
当您需要对记录器进行细粒度控制时(例如,要将记录器发送到另一个文件或以其他方式管理记录器;这是一种罕见的用例),这是最合适的。

弃用记录编辑
除了常规日志记录外,Elasticsearch还允许您启用不赞成使用的操作的日志记录。例如,这使您可以及早确定是否将来需要迁移某些功能。默认情况下,在WARN级别启用弃用日志记录,该级别将发出所有弃用日志消息。

记录器。弃用。级别= 警告
这将在您的日志目录中创建每日滚动弃用日志文件。定期检查此文件,尤其是在您打算升级到新的主要版本时。

默认日志记录配置已将弃用日志的滚动策略设置为在1 GB之后滚动和压缩,并最多保留五个日志文件(四个滚动日志和活动日志)。

您可以config/log4j2.properties通过将弃用日志级别设置为以下方式在文件中禁用它error:

记录器。弃用。名称= org 。弹性搜索。弃用
记录器。弃用。级别= 错误

重要的Elasticsearch配置

尽管Elasticsearch只需很少的配置,但是在投入生产之前,需要考虑许多设置。

进入生产之前,必须考虑以下设置:

路径设定
集群名称
节点名称
网络主机
发现设置
堆大小
堆转储路径
GC记录
临时目录

path.data和path.logs

如果您使用.zip或.tar.gz归档,则data和logs 目录是的子文件夹$ES_HOME。如果这些重要文件夹保留在默认位置,则在将Elasticsearch升级到新版本时,很有可能将其删除。

在生产中使用时,几乎可以肯定要更改data和log文件夹的位置:

路径:
日志:/ var / log / elasticsearch
数据:/ var / data / elasticsearch
RPM和Debian发行版已经为data和使用了自定义路径logs。

该path.data设置可以被设置为多条路径,在这种情况下,所有的路径将被用于存储数据(虽然属于单个碎片文件将全部存储相同的数据路径上):

路径:
数据:

  • / MNT / elasticsearch_1
    • 的/ mnt / elasticsearch_2
    • / MNT / elasticsearch_3

cluster.name

当cluster.name节点与集群中的所有其他节点共享节点时,该节点只能加入集群。默认名称为elasticsearch,但您应将其更改为描述群集用途的适当名称。

簇。名称:日志记录- 产品
确保不要在不同的环境中重复使用相同的集群名称,否则最终可能会导致节点加入了错误的集群。

node.name

默认情况下,Elasticsearch将使用随机生成的UUID的前七个字符作为节点ID。请注意,节点ID是持久的,并且在节点重新启动时不会更改,因此默认节点名称也不会更改。

值得配置一个更有意义的名称,该名称还将具有重新启动节点后仍然存在的优点:

节点。名称:PROD - 数据- 2
该node.name如下,也可以设置为服务器的主机名:

节点。名称:$ {HOSTNAME}

network.host

默认情况下,Elasticsearch仅绑定到环回地址(例如127.0.0.1 和)[::1]。这足以在服务器上运行单个开发节点。

实际上,可以从$ES_HOME 单个节点上的相同位置启动多个节点。这对于测试Elasticsearch形成集群的能力很有用,但不是推荐用于生产的配置。

为了与其他服务器上的节点形成集群,您的节点将需要绑定到非环回地址。尽管网络设置很多 ,通常您需要配置的是 network.host:

网络。主机:192.168.1.10
该network.host设置也了解一些特殊的值,比如 localsite,_global_和喜欢修饰:ip4和:ip6,其中的细节中可以找到特殊值network.host。

一旦为提供了自定义设置network.host,Elasticsearch就会假设您正在从开发模式过渡到生产模式,并将许多系统启动检查从警告升级为异常。有关更多信息,请参见开发模式与生产模式。

发现设置

Elasticsearch使用名为“ Zen Discovery”的自定义发现实现来进行节点到节点的集群和主选举。在投入生产之前,应配置两个重要的发现设置。

discovery.zen.ping.unicast.hosts编辑
开箱即用,无需任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300至9305以尝试连接到同一服务器上运行的其他节点。这提供了自动群集体验,而无需进行任何配置。

当要组成一个在其他服务器上具有节点的集群时,您必须提供集群中其他可能处于活动状态且可联系的其他节点的种子列表。可以指定如下:

discover.zen.ping.unicast。主机:

  • 192.168.1.10 :9300
    • 192.168.1.11
    • seeds.mydomain.com

如果未指定transport.profiles.default.port,transport.port则端口将默认为,并回退为 。

解析为多个IP地址的主机名将尝试所有解析的地址。

discovery.zen.minimum_master_nodes编辑
为了防止数据丢失,至关重要的是配置此 discovery.zen.minimum_master_nodes设置,以便每个符合主机要求的节点都知道为形成群集而必须可见的符合主机要求的最小数量。

没有此设置,遭受网络故障的群集就有将群集拆分为两个独立的群集(裂脑)的风险,这将导致数据丢失。在避免大脑裂开中minimum_master_nodes提供了更详细的说明 。

为避免大脑分裂,应将此设置设置为符合主资格的节点的法定人数:

(master_eligible_nodes / 2)+ 1
换句话说,如果有三个符合主条件的节点,则最小主节点应设置为(3 / 2) + 1或2:

发现。禅 minimum_master_nodes:2

设置堆大小

默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。在进入生产环境时,配置堆大小以确保Elasticsearch有足够的可用堆非常重要。

Elasticsearch将通过(最小堆大小)和(最大堆大小)设置分配jvm.options中指定的整个堆 。XmsXmx

这些设置的值取决于服务器上可用的RAM数量。好的经验法则是:

将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
Elasticsearch可用的堆越多,可用于缓存的内存就越多。但是请注意,过多的堆可能会使您长时间停滞垃圾回收。
设置Xmx为不超过物理RAM的50%,以确保有足够的物理RAM用于内核文件系统缓存。
不要将其设置Xmx为高于JVM用于压缩对象指针(压缩oop)的临界值;确切的截止时间有所不同,但接近32 GB。您可以通过在日志中查找如下一行来验证您是否处于限制范围内:

堆大小[1.9gb],压缩的普通对象指针[true]
更好的是,尝试保持在基于零的压缩oop的阈值以下;确切的截止时间有所不同,但是在大多数系统上26 GB是安全的,但是在某些系统上可以达到30 GB。您可以通过使用JVM选项启动Elasticsearch -XX:+UnlockDiagnosticVMOptions
-XX:+PrintCompressedOopsMode并查找类似于以下内容的行来验证您是否处于限制范围内:

堆地址:0x000000011be00000,大小:27648 MB,从零开始的压缩操作
显示启用了从零开始的压缩oop,而不是

堆地址:0x0000000118400000,大小:28672 MB,压缩基数为0x00000001183ff000
以下是有关如何通过jvm.options文件设置堆大小的示例:

  • Xms2g
  • Xmx2g

将最小堆大小设置为2g。

将最大堆大小设置为2g。

也可以通过环境变量设置堆大小。这可以通过注释掉文件中的Xms和Xmx设置, jvm.options然后通过ES_JAVA_OPTS以下方式设置这些值来完成:

ES_JAVA_OPTS = “-Xms2g -Xmx2g” ./ 箱/ elasticsearch
ES_JAVA_OPTS = “-Xms4000m -Xmx4000m” ./ 箱/ elasticsearch

将最小和最大堆大小设置为2 GB。

将最小和最大堆大小设置为4000 MB。

Windows服务的堆配置与上述不同。可以为Windows服务初始填充的值可以按上述配置,但是在安装服务后会有所不同。有关其他详细信息,请查阅Windows服务文档。

JVM堆转储路径

默认情况下,Elasticsearch配置JVM以将内存不足异常中的堆转储到默认数据目录(这 /var/lib/elasticsearch用于RPM和Debian软件包发行版,而dataElasticsearch安装根目录下的目录用于tar和zip归档发行版) 。如果这个路径是不适合接受堆转储,您应该修改的条目-XX:HeapDumpPath=…在 jvm.options。如果指定目录,那么JVM将基于正在运行的实例的PID为堆转储生成文件名。如果指定固定文件名而不是目录,则当JVM需要在内存不足异常时执行堆转储时,该文件必须不存在,否则堆转储将失败。

GC日志记录

默认情况下,Elasticsearch启用GC日志。这些配置在jvm.optionsElasticsearch日志中, 并且默认使用与Elasticsearch日志相同的默认位置。默认配置每64 MB轮换一次日志,最多可消耗2 GB磁盘空间。

Temp目录

默认情况下,Elasticsearch使用启动脚本在系统临时目录下立即创建的私有临时目录。

在某些Linux发行版中,/tmp如果最近未访问过文件和目录,则系统实用程序将从中清除文件和目录。如果长时间不使用需要使用临时目录的功能,这可能会导致在Elasticsearch运行时删除私有临时目录。如果随后使用需要临时目录的功能,则将导致问题。

如果使用.deb或.rpm软件包安装Elasticsearch 并在其下运行,systemd则定期清理将排除Elasticsearch使用的私有临时目录。

但是,如果打算.tar.gz长时间在Linux 上运行发行版,则应考虑为Elasticsearch创建专用的临时目录,该目录不在将清除旧文件和目录的路径下。该目录应设置权限,以便只有运行Elasticsearch的用户才能访问它。然后$ES_TMPDIR在启动Elasticsearch之前将环境变量设置 为指向它。

JVM致命错误日志

默认情况下,Elasticsearch配置JVM写致命错误日志的默认日志目录(这是/var/log/elasticsearch对RPM和Debian的软件包分发,并logs 在Elasticsearch安装的根目录下 的tar和zip压缩文件分布)。这些是JVM在遇到致命错误(例如,分段错误)时生成的日志。如果该路径不适合于接收的日志,则应修改条目-XX:ErrorFile=…中 jvm.options到备用路径。

重要系统配置

理想情况下,Elasticsearch应该在服务器上单独运行并使用所有可用资源。为此,您需要配置您的操作系统,以允许运行Elasticsearch的用户访问比默认允许更多的资源。

进入生产之前,必须考虑以下设置:

禁用交换
增加文件描述符
确保有足够的虚拟内存
确保足够的线程
JVM DNS缓存设置
临时目录未安装 noexec
开发模式与生产模式编辑
默认情况下,Elasticsearch假定您正在开发模式下工作。如果没有正确配置以上任何设置,那么将在日志文件中写入警告,但是您将能够启动和运行Elasticsearch节点。

一旦您配置了像这样的网络设置network.host,Elasticsearch就会假设您即将投入生产,并将上述警告升级为异常。这些异常将阻止您的Elasticsearch节点启动。这是一项重要的安全措施,可确保不会因服务器配置错误而丢失数据。

配置系统设置

在何处配置系统设置取决于您用于安装Elasticsearch的软件包以及所使用的操作系统。

使用.zip或.tar.gz软件包时,可以配置系统设置:

暂时与ulimit或
永久在/etc/security/limits.conf。
使用RPM或Debian软件包时,大多数系统设置是在系统配置文件中设置的 。但是,使用systemd的系统要求在systemd配置文件中指定系统限制 。

ulimit编辑
在Linux系统上,ulimit可用于临时更改资源限制。通常需要像root切换到要运行Elasticsearch的用户之前那样设置限制。例如,要将打开的文件句柄(ulimit -n)的数量设置为65,536,可以执行以下操作:

苏多苏
ulimit - n 65535
苏弹性搜索

成为root。

更改打开文件的最大数量。

成为elasticsearch用户以启动Elasticsearch。

新限制仅适用于当前会话。

您可以使用查阅所有当前应用的限制ulimit -a。

/etc/security/limits.conf编辑
在Linux系统上,可以通过编辑/etc/security/limits.conf文件来为特定用户设置永久限制。要将elasticsearch用户打开的最大文件数设置为65,535,请在limits.conf文件中添加以下行:

elasticsearch - nofile 65535
此更改仅在elasticsearch用户下次打开新会话时生效。

Ubuntu和 limits.conf
Ubuntu会忽略该limits.conf文件以启动的进程init.d。要启用limits.conf文件,请编辑/etc/pam.d/su并取消注释以下行:

#个会话必填pam_limits.so
Sysconfig文件编辑
使用RPM或Debian软件包时,可以在系统配置文件中指定系统设置和环境变量,该文件位于:

转速

/etc/sysconfig/elasticsearch

德比安

/etc/default/elasticsearch

但是,对于使用的systemd系统,需要通过systemd指定系统限制。

系统配置编辑
在使用systemd的系统上使用RPM或Debian软件包时 ,必须通过systemd指定系统限制。

systemd服务文件(/usr/lib/systemd/system/elasticsearch.service)包含默认情况下应用的限制。

要覆盖它们,请添加一个名为的文件 /etc/systemd/system/elasticsearch.service.d/override.conf(或者,您可以运行sudo systemctl edit elasticsearch该文件,该文件会在默认编辑器中自动打开)。设置此文件中的所有更改,例如:

[ 服务] LimitMEMLOCK = 无限
完成后,运行以下命令以重新加载单元:

sudo systemctl守护程序- 重新加载

禁用交换

大多数操作系统尝试为文件系统缓存使用尽可能多的内存,并急切换出未使用的应用程序内存。这可能导致JVM堆的一部分甚至其可执行页面换出到磁盘上。

交换对性能,节点稳定性非常不利,应不惜一切代价避免交换。它可能导致垃圾回收持续几分钟而不是毫秒,并且可能导致节点响应缓慢甚至断开与群集的连接。在弹性分布式系统中,让操作系统杀死该节点更为有效。

有三种禁用交换的方法。首选选项是完全禁用交换。如果这不是一个选择,则是否要尽量减少交换性而不是内存锁定取决于您的环境。

禁用所有交换文件编辑
通常,Elasticsearch是在盒子上运行的唯一服务,其内存使用量由JVM选项控制。无需启用交换功能。

在Linux系统上,可以通过运行以下命令暂时禁用交换:

须藤的swapoff - 一个
要永久禁用它,您将需要编辑/etc/fstab文件并注释掉所有包含单词的行swap。

在Windows上,可以通过完全禁用分页文件来实现等效功能System Properties → Advanced → Performance → Advanced → Virtual memory。

配置 swappiness编辑
Linux系统上可用的另一个选项是确保sysctl值 vm.swappiness设置为1。这减少了内核的交换趋势,并且在正常情况下不应导致交换,同时仍允许整个系统在紧急情况下进行交换。

启用 bootstrap.memory_lock编辑
另一个选择是在Linux / Unix系统上使用mlockall或 在Windows 上 使用 VirtualLock尝试将进程地址空间锁定到RAM中,以防止任何Elasticsearch内存被换出。可以通过将以下行添加到config/elasticsearch.yml文件中来完成此操作:

引导程序。memory_lock:是
mlockall 如果尝试分配的内存超过可用内存,可能会导致JVM或Shell会话退出!

启动Elasticsearch之后,您可以通过检查mlockall此请求的输出中的值来查看是否成功应用了此设置:

GET _nodes ?filter_path = **。mlockall
复制为cURL
在控制台中查看

如果看到的mlockall是false,则表示mlockall 请求失败。您还将在日志中看到一行,上面有更多信息Unable to lock JVM Memory。

在Linux / Unix系统上,最可能的原因是运行Elasticsearch的用户无权锁定内存。可以授予以下权限:

.zip 和 .tar.gz
ulimit -l unlimited在启动Elasticsearch之前 设置为root,或者设置memlock为unlimitedin /etc/security/limits.conf。
RPM和Debian
在 系统配置文件中 设置MAX_LOCKED_MEMORY为(对于使用的系统,请参见下文 )。 unlimitedsystemd
系统使用 systemd
在systemd配置中 设置LimitMEMLOCK为。 infinity
mlockall失败的另一个可能原因是 JNA临时目录(通常是的子目录 /tmp)是通过noexecoption 挂载的。这可以通过使用ES_JAVA_OPTS环境变量为JNA指定新的临时目录来解决:

导出ES_JAVA_OPTS = “ $ ES_JAVA_OPTS -Djna.tmpdir = <路径>” ./ bin / elasticsearch
或在jvm.options配置文件中设置此JVM标志。

文件描述符

这仅与Linux和macOS有关,如果在Windows上运行Elasticsearch,则可以安全地忽略它。在Windows上,JVM使用 仅受可用资源限制的 API。

Elasticsearch使用许多文件描述符或文件句柄。文件描述符用尽可能是灾难性的,很可能导致数据丢失。确保将运行Elasticsearch的用户的打开文件描述符的数量限制增加到65,536或更高。

对于.zip和.tar.gz包,ulimit -n 65535在启动Elasticsearch之前设置为root,或者设置nofile为65535in /etc/security/limits.conf。

在macOS上,您还必须将JVM选项传递-XX:-MaxFDLimit 给Elasticsearch,以使其使用更高的文件描述符限制。

RPM和Debian软件包已经默认将文件描述符的最大数量设置为65535,并且不需要进一步配置。

您可以max_file_descriptors使用Nodes Stats API 检查每个节点的配置,其中包括:

GET _nodes / stats / process ?filter_path = **。max_file_descriptors
复制为cURL
在控制台中查看

虚拟内存

Elasticsearch mmapfs默认使用目录来存储其索引。默认的操作系统对mmap计数的限制可能太低,这可能会导致内存不足异常。

在Linux上,您可以通过运行以下命令来增加限制 root:

sysctl的- w ^ VM 。max_map_count = 262144
要永久设置此值,请更新中的vm.max_map_count设置 /etc/sysctl.conf。要在重启后进行验证,请运行sysctl vm.max_map_count。

RPM和Debian软件包将自动配置此设置。不需要进一步的配置。

线程数

Elasticsearch对不同类型的操作使用许多线程池。能够在需要时创建新线程很重要。确保Elasticsearch用户可以创建的线程数至少为4096。

这可以通过ulimit -u 4096在启动Elasticsearch之前设置为root或设置nproc为4096in来完成 /etc/security/limits.conf。

包分发作为服务运行时,systemd将自动为Elasticsearch进程配置线程数。无需其他配置。

DNS缓存设置

Elasticsearch在适当的位置运行安全管理器。有了安全管理器,JVM默认将无限期缓存正主机名解析,并且默认将负主机名解析缓存十秒钟。Elasticsearch使用默认值覆盖此行为,以将正向查找缓存六十秒,并将负向查找缓存十秒。这些值应适用于大多数环境,包括DNS分辨率随时间变化的环境。如果没有,您可以 在JVM选项中编辑值es.networkaddress.cache.ttl和。需要注意的是价值 和 在 Java安全策略由Elasticsearch忽略,除非你删除的设置 和。es.networkaddress.cache.negative.ttlnetworkaddress.cache.ttl=networkaddress.cache.negative.ttl=es.networkaddress.cache.ttles.networkaddress.cache.negative.ttl

JNA临时目录未与之一起安装noexec

这仅与Linux有关。

Elasticsearch使用Java本机访问(JNA)库来执行一些平台相关的本机代码。在Linux上,支持该库的本机代码在运行时从JNA存档中提取。默认情况下,此代码被提取到Elasticsearch临时目录,该目录默认为的子目录 /tmp。或者,可以使用JVM标志来控制此位置 -Djna.tmpdir= 。由于本机库以可执行文件的形式映射到JVM虚拟地址空间中,因此必须不装入提取此代码的位置的基础安装点,noexec因为这将阻止JVM进程将其映射为可执行文件。在某些加固的Linux安装中,这是默认的安装选项/tmp。表示已安装基础安装的一种迹象noexec是,在启动时,JNA将无法加载,并且java.lang.UnsatisfiedLinkerError带有一条类似的消息failed to map segment from shared object。请注意,在JVM版本之间,异常消息可能有所不同。此外,依赖于通过JNA执行本机代码的Elasticsearch组件将失败,并显示指示其为的消息because JNA is not available。如果看到这样的错误消息,则必须重新挂载JNA所用的临时目录,以使其不能挂载noexec。

引导检查

总的来说,由于用户尚未配置重要的设置,因此他们在遇到意料之外的问题方面拥有丰富的经验 。在Elasticsearch的早期版本中,其中一些设置的错误配置被记录为警告。可以理解,用户有时会错过这些日志消息。为确保这些设置得到应有的关注,Elasticsearch在启动时进行引导检查。

这些引导检查会检查各种Elasticsearch和系统设置,并将它们与对Elasticsearch的操作安全的值进行比较。如果Elasticsearch处于开发模式,则任何失败的引导程序检查都会在Elasticsearch日志中显示为警告。如果Elasticsearch处于生产模式,则任何失败的引导检查都会导致Elasticsearch拒绝启动。

总会强制执行一些引导检查,以防止Elasticsearch以不兼容的设置运行。这些检查是单独记录的。

开发与生产模式编辑
默认情况下,Elasticsearch绑定到HTTP 和传输(内部)通信的回送地址。对于下载和玩Elasticsearch以及日常开发来说,这是很好的选择,但对生产系统没有用。要加入集群,Elasticsearch节点必须可以通过传输通信到达。要通过非环回地址加入集群,节点必须将传输绑定到非环回地址,并且不能使用单节点发现。因此,如果Elasticsearch节点无法通过非环回地址与另一台机器形成集群,则认为该节点处于开发模式,如果它可以通过非环回地址加入集群,则该节点处于生产模式。

注意,可以通过http.host和单独配置HTTP和传输 transport.host。这对于将单个节点配置为可通过HTTP进行访问以进行测试(而不触发生产模式)很有用。

单节点发现编辑
我们认识到某些用户需要将传输绑定到外部接口以测试其对传输客户端的使用。对于这种情况,我们提供发现类型single-node(通过设置discovery.type为来 配置single-node);在这种情况下,节点将选举自己为主节点,并且不会与任何其他节点一起加入群集。

强制进行引导检查编辑
如果您在生产中运行单个节点,则可以逃避引导检查(通过不将传输绑定到外部接口,或者通过将传输绑定到外部接口并将发现类型设置为 single-node)。对于这种情况,您可以通过将system属性设置es.enforce.bootstrap.checks为true (在Setting JVM options中设置此属性,或通过添加-Des.enforce.bootstrap.checks=true 到environment variable ES_JAVA_OPTS)来强制执行引导检查。如果您身处这种情况,我们强烈建议您这样做。该系统属性可用于强制执行独立于节点配置的引导检查。

堆大小检查

如果以不相等的初始堆大小和最大堆大小启动JVM,则在系统使用过程中调整JVM堆大小时,它很容易暂停。为了避免这些调整大小的停顿,最好以初始堆大小等于最大堆大小的方式启动JVM。此外,如果 bootstrap.memory_lock启用,JVM将在启动时锁定堆的初始大小。如果初始堆大小不等于最大堆大小,则在调整大小之后,并非所有JVM堆都锁定在内存中。要通过堆大小检查,必须配置堆大小。

文件描述符检查

文件描述符是用于跟踪打开的“文件”的Unix构造。但是在Unix中,所有内容都是一个file。例如,“文件”可以是物理文件,虚拟文件​​(例如/proc/loadavg)或网络套接字。Elasticsearch需要大量的文件描述符(例如,每个分片都由多个段和其他文件组成,以及与其他节点的连接等)。此引导检查在OS X和Linux上强制执行。要通过文件描述符检查,您可能必须配置文件描述符。

内存锁定检查

JVM执行主要垃圾回收时,它会触及堆的每个页面。如果将这些页面中的任何一个换出到磁盘,则必须将其换回内存。这导致大量磁盘崩溃,Elasticsearch宁愿使用它们来处理请求。有几种方法可以配置系统以禁止交换。一种方法是通过mlockall(Unix)或虚拟锁(Windows)请求JVM将堆锁定在内存中。这是通过Elasticsearch设置完成的 bootstrap.memory_lock。但是,在某些情况下,可以将此设置传递给Elasticsearch但Elasticsearch无法锁定堆(例如,如果elasticsearch 用户没有memlock unlimited)。该内存锁定检查验证,如果该bootstrap.memory_lock启用该设置,表明JVM已成功锁定了堆。要通过内存锁定检查,您可能必须配置bootstrap.memory_lock。

最大线程数检查

Elasticsearch通过将请求分解为多个阶段并将这些阶段交给不同的线程池执行程序来执行请求。Elasticsearch中有各种任务的不同线程池执行程序。因此,Elasticsearch需要具有创建大量线程的能力。检查最大线程数可确保Elasticsearch进程有权在正常使用下创建足够的线程。仅在Linux上强制执行此检查。如果您使用的是Linux,要通过最大线程数检查,必须将系统配置为允许Elasticsearch进程创建至少4096个线程。这可以通过/etc/security/limits.conf 使用nproc设置来完成(请注意,您可能还必须增加root用户的限制)。

最大文件大小检查

作为单个分片的组成部分的段文件以及作为跨记录的组成部分的跨记录世代​​可能会变得很大(超过数GB)。在Elasticsearch流程可以创建的文件的最大大小受限制的系统上,这可能导致写入失败。因此,这里最安全的选择是最大文件大小不受限制,这就是最大文件大小引导检查所强制执行的内容。要通过最大文件检查,您必须配置系统以使Elasticsearch进程能够写入无限大小的文件。这可以通过 /etc/security/limits.conf使用fsize设置来完成unlimited(请注意,您可能还必须增加root用户的限制)。

最大大小虚拟内存检查

Elasticsearch和Lucene mmap很有用,可以将索引的某些部分映射到Elasticsearch地址空间中。这将某些索引数据保留在JVM堆之外,但保留在内存中,以实现快速访问。为了使其有效,Elasticsearch应该具有无限的地址空间。虚拟内存最大大小检查要求Elasticsearch进程具有无限的地址空间,并且仅在Linux上强制执行。要通过最大大小的虚拟内存检查,您必须将系统配置为允许Elasticsearch进程具有无限的地址空间。这可以通过/etc/security/limits.conf使用as设置来完成unlimited(请注意,您可能还必须增加root用户的限制)。

最大映射计数检查

为了有效地使用,从上一点开始,mmapElasticsearch还需要具有创建许多内存映射区域的能力。最大映射计数检查可检查内核是否允许进程具有至少262,144个内存映射区域,并且仅在Linux上强制执行。要通过最大地图计数检查,您必须将vm.max_map_countvia 配置sysctl为至少为262144。

另外,仅当您正在使用mmapfs或hybridfs作为索引的商店类型时,才需要最大地图计数检查 。如果您不允许使用,mmap则将不会执行此引导检查。

客户端JVM检查

OpenJDK派生的JVM提供了两种不同的JVM:客户端JVM和服务器JVM。这些JVM使用不同的编译器从Java字节码生成可执行的机器代码。调整客户端JVM的启动时间和内存占用量,同时调整服务器JVM的性能以最大化性能。两个VM之间的性能差异可能很大。客户端JVM检查可确保Elasticsearch不在客户端JVM内运行。要通过客户端JVM检查,您必须使用服务器VM启动Elasticsearch。在现代系统和操作系统上,服务器VM是默认设置。

使用串行收集器检查

针对不同工作负载的OpenJDK衍生的JVM有各种垃圾收集器。特别是,串行收集器最适合于单逻辑CPU机器或非常小的堆,这两种都不适合运行Elasticsearch。将串行收集器与Elasticsearch一起使用可能会破坏性能。串行收集器检查可确保未将Elasticsearch配置为与串行收集器一起运行。要通过串行收集器检查,您一定不能从串行收集器启动Elasticsearch(无论是从您使用的JVM的默认值开始,还是用明确指定了它-XX:+UseSerialGC)。请注意,Elasticsearch随附的默认JVM配置将Elasticsearch配置为使用CMS收集器。

系统调用过滤器检查

Elasticsearch根据操作系统(例如Linux上的seccomp)安装各种样式的系统调用过滤器。安装这些系统调用过滤器是为了防止执行与分叉相关的系统调用的能力,以作为对Elasticsearch上任意代码执行攻击的防御机制。系统调用筛选器检查可确保如果启用了系统调用筛选器,则说明它们已成功安装。要通过系统调用过滤器检查,您必须修复系统上阻止安装系统调用过滤器的所有配置错误(检查日志),或者将设置bootstrap.system_call_filter为来禁用系统调用过滤器,后果自负false。

OnError和OnOutOfMemoryError检查

如果JVM遇到致命错误()或 (),则JVM选项可以启用OnError并OnOutOfMemoryError执行任意命令。但是,默认情况下,Elasticsearch系统调用过滤器(seccomp)已启用,并且这些过滤器可防止派生。因此,使用或 和系统调用筛选器是不兼容的。该和 检查防止Elasticsearch从如果这两个JVM选项的使用和系统调用过滤器可启动。始终执行此检查。要通过这项检查没有启用 ,也没有; 相反,升级到Java 8u92并使用JVM标志。虽然它不具有nor 的全部功能,但启用seccomp时将不支持任意分支。OnErrorOutOfMemoryErrorOnOutOfMemoryErrorOnErrorOnOutOfMemoryErrorOnErrorOnOutOfMemoryErrorOnErrorOnOutOfMemoryErrorExitOnOutOfMemoryErrorOnErrorOnOutOfMemoryError

早期访问检查

OpenJDK项目提供了即将发布的版本的早期访问快照。这些发行版不适合生产。抢先检查将检测到这些抢先快照。要通过此检查,您必须在JVM的发行版上启动Elasticsearch。

G1GC检查

已知JDK 8附带的HotSpot JVM的早期版本存在一些问题,当启用G1GC收集器时,这些问题可能导致索引损坏。受影响的版本早于JDK 8u40随附的HotSpot版本。G1GC检查会检测到这些早期版本的HotSpot JVM。

所有权限检查

所有权限检查可确保引导过程中使用的安全策略不会将权限授予java.security.AllPermissionElasticsearch。以授予的所有权限运行等同于禁用安全管理器。

启动Elasticsearch

启动Elasticsearch的方法因您的安装方式而异。

存档包(.tar.gz)编辑
如果您使用.tar.gz软件包安装了Elasticsearch ,则可以从命令行启动Elasticsearch。

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

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

与Elasticsearch打包在一起的所有脚本都需要支持阵列的Bash版本,并假定Bash在以下位置可用/bin/bash。因此,Bash应该直接或通过符号链接在此路径上可用。

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

./ bin / elasticsearch - d - p pid
日志消息可以在$ES_HOME/logs/目录中找到。

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

pkill的- ˚FPID
RPM和Debian 软件包中提供的启动脚本会为您启动和停止Elasticsearch进程。

存档包(.zip)编辑
如果您在Windows上使用.zip软件包安装了Elasticsearch ,则可以从命令行启动Elasticsearch。如果您希望Elasticsearch在启动时自动启动而无需任何用户交互,则将Elasticsearch作为服务安装。

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

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

Debian软件包编辑
安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统是使用SysV init还是 systemd(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:

ps - p 1
使用SysV运行Elasticsearch init编辑
使用update-rc.d命令将Elasticsearch配置为在系统启动时自动启动:

更新执行sudo - RC 。d elasticsearch默认值95 10
可以使用以下service命令启动和停止Elasticsearch :

须藤- 我的服务elasticsearch启动
须藤- 我服务elasticsearch停止
如果Elasticsearch由于任何原因启动失败,它将把失败原因打印到STDOUT。日志文件可以在中找到/var/log/elasticsearch/。

使用运行Elasticsearch systemd编辑
要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo / bin / systemctl守护程序- 重新加载
sudo / bin / systemctl启用elasticsearch 。服务
Elasticsearch可以按以下方式启动和停止:

sudo systemctl启动elasticsearch 。服务
sudo systemctl停止elasticsearch 。服务
这些命令不提供有关Elasticsearch是否成功启动的反馈。而是将这些信息写入位于中的日志文件中/var/log/elasticsearch/。

默认情况下,Elasticsearch服务不会在日志中记录信息systemd 。要启用journalctl日志记录,–quiet必须从文件的ExecStart命令行中删除该选项elasticsearch.service。

当systemd启用了日志记录,日志信息使用可用journalctl的命令:

尾随日记:

须藤journalctl - f
列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch
要从给定时间开始列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch - 因为 “二○一六年十月三十〇日十八时17分16秒”
检查man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html了解更多命令行选项。

Docker镜像编辑
如果安装了Docker映像,则可以从命令行启动Elasticsearch。根据使用的是开发模式还是生产模式,可以使用不同的方法。请参阅从命令行运行Elasticsearch。

MSI套件编辑
如果使用该.msi软件包在Windows上安装了Elasticsearch ,则可以从命令行启动Elasticsearch。如果您希望它在引导时自动启动而无需任何用户干预, 请安装Elasticsearch作为Windows服务。

从命令行运行Elasticsearch编辑
一旦安装,Elasticsearch可以从命令行启动(如果未作为服务安装)并配置为在安装完成时启动,如下所示:

。\ b 在\ elasticsearch 。可执行程序
命令行终端将显示类似于以下内容的输出:

弹性搜索程序
默认情况下,Elasticsearch在前台运行,STDOUT除了打印其中的.log文件外,还将其日志打印到LOGSDIRECTORY,可以通过按停止Ctrl-C。

RPM软件包编辑
安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统是使用SysV init还是 systemd(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:

ps - p 1
使用SysV运行Elasticsearch init编辑
使用chkconfig命令将Elasticsearch配置为在系统启动时自动启动:

须藤chkconfig的- 附加elasticsearch
可以使用以下service命令启动和停止Elasticsearch :

须藤- 我的服务elasticsearch启动
须藤- 我服务elasticsearch停止
如果Elasticsearch由于任何原因启动失败,它将把失败原因打印到STDOUT。日志文件可以在中找到/var/log/elasticsearch/。

使用运行Elasticsearch systemd编辑
要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo / bin / systemctl守护程序- 重新加载
sudo / bin / systemctl启用elasticsearch 。服务
Elasticsearch可以按以下方式启动和停止:

sudo systemctl启动elasticsearch 。服务
sudo systemctl停止elasticsearch 。服务
这些命令不提供有关Elasticsearch是否成功启动的反馈。而是将这些信息写入位于中的日志文件中/var/log/elasticsearch/。

默认情况下,Elasticsearch服务不会在日志中记录信息systemd 。要启用journalctl日志记录,–quiet必须从文件的ExecStart命令行中删除该选项elasticsearch.service。

当systemd启用了日志记录,日志信息使用可用journalctl的命令:

尾随日记:

须藤journalctl - f
列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch
要从给定时间开始列出elasticsearch服务的日记帐分录:

须藤journalctl - 单元elasticsearch - 因为 “二○一六年十月三十〇日十八时17分16秒”
检查man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html了解更多命令行选项。

停止Elasticsearch

有计划地关闭Elasticsearch可以确保Elasticsearch有机会清理和关闭未使用的资源。例如,以有序方式关闭的节点将其自身从群集中删除,将跨日志同步到磁盘,并执行其他相关的清理活动。您可以通过适当地停止Elasticsearch来帮助确保有序关闭。

如果您将Elasticsearch作为服务运行,则可以通过安装提供的服务管理功能来停止Elasticsearch。

如果您直接运行Elasticsearch,则可以通过在控制台中运行Elasticsearch的方式发送control-C来停止Elasticsearch,或者通过发送SIGTERM至POSIX系统上的Elasticsearch进程来停止。您可以通过各种工具(例如ps或jps)获取PID以将信号发送至:

$ jps | grep Elasticsearch 14542 弹性搜索

从Elasticsearch启动日志中:

[ 2016 - 07 - 07 12 :26 :18 ,908 ] [ INFO ] [ 节点 ] [ I8hydUG ] 版本[ 5.0 。0 - 的α4 ],PID [ 15399 ],构建[ 3f5b994 / 2016 - 06 - 27T16 :23 :46.861Z ],OS [ 苹果OS X / 10.11 。5 / x86_64的],JVM [ 甲骨文公司/ 爪哇的HotSpot (TM )64 - 位服务器VM / 1.8 。0_92 / 25.92 - b14 ]
或者通过指定在启动(-p )时将PID文件写入的位置:

$ ./ bin / elasticsearch - p / tmp / elasticsearch - pid - d
$猫/ tmp目录/ elasticsearch - PID && 回声
15516
$杀- SIGTERM 15516
停止致命错误编辑
在Elasticsearch虚拟机的生命周期内,可能会出现某些致命错误,使虚拟机处于可疑状态。这些致命错误包括内存不足错误,虚拟机内部错误以及严重的I / O错误。

当Elasticsearch检测到虚拟机遇到此类致命错误时,Elasticsearch将尝试记录该错误,然后停止该虚拟机。当Elasticsearch启动此类关闭时,它不会如上所述进行有序关闭。Elasticsearch流程还将返回一个特殊的状态代码,以指示错误的性质。

JVM内部错误

128

内存不足错误

127

堆栈溢出错误

126

未知的虚拟机错误

125

严重的I / O错误

124

未知的致命错误

1个

将节点添加到集群

当启动Elasticsearch实例时,即在启动node。Elasticsearch 集群 是一组具有相同cluster.name属性的节点。当节点加入或离开群集时,群集会自动重新组织以在可用节点之间平均分配数据。

如果您运行的是Elasticsearch的单个实例,那么您将拥有一个节点的集群。所有主分片都驻留在单个节点上。无法分配副本分片,因此群集状态保持黄色。群集可以完全正常运行,但是如果发生故障,则存在数据丢失的风险。

具有一个节点和三个主分片的集群
您将节点添加到群集以增加其容量和可靠性。默认情况下,节点既是数据节点,又有资格被选为控制群集的主节点。您还可以为特定目的配置新节点,例如处理摄取请求。有关更多信息,请参见 Nodes。

当您将更多节点添加到群集时,它将自动分配副本分片。当所有主分片和副本分片均处于活动状态时,群集状态将变为绿色。

具有三个节点的集群
要将节点添加到集群:

设置一个新的Elasticsearch实例。
在其cluster.name属性中指定集群的名称。例如,要将节点添加到logging-prod集群,请cluster.name: “logging-prod” 在中设置elasticsearch.yml。
启动Elasticsearch。节点自动发现并加入指定的集群。
有关发现和碎片分配的更多信息,请参见 发现和群集。

在Elasticsearch中安装X-Pack

默认情况下,当您安装Elasticsearch时,会安装X-Pack。请参阅 安装Elasticsearch。

设置X-Pack

X-Pack是Elastic Stack扩展,可提供安全性,警报,监视,报告,机器学习和许多其他功能。默认情况下,当您安装Elasticsearch时,会安装X-Pack。

如果您想尝试所有X-Pack功能,可以 开始30天的试用期。在试用期结束时,您可以购买订阅以继续使用X-Pack组件的全部功能。有关更多信息,请参见 https://www.elastic.co/subscriptions。

安装X-Pack
监控集群
配置安全性
配置X-Pack Java客户端
X-Pack设置
引导程序检查X-Pack

配置X-Pack Java客户端

如果要将Java 传输客户端与安装了X-Pack的群集一起使用,则必须下载并配置X-Pack传输客户端。

我们计划TransportClient在Elasticsearch 7.0中弃用并在8.0中将其完全删除。相反,您应该使用 Java高级REST客户端,该客户端执行HTTP请求而不是序列化的Java请求。该 迁移指南描述了所有需要迁移的步骤。

Java高级REST客户端当前支持更常用的API,但是还有很多需要添加。通过添加对此问题的注释,可以告诉我们您的应用程序需要哪些缺少的API,从而帮助我们确定优先级: Java高级REST客户端完整性。

现在,始终可以使用带有JSON请求和响应主体的低级Java REST客户端来实现任何缺少的API 。

将X-Pack传输JAR文件添加到CLASSPATH中。您可以下载X-Pack发行版并手动提取JAR文件,也可以从Elasticsearch Maven存储库中获取它 。与任何依赖项一样,您还将需要其传递性依赖项。下载以供离线使用时,请参考您的版本的 X-Pack POM文件。
如果使用的是Maven,则需要将X-Pack JAR文件添加为项目文件中的依赖项pom.xml:

<项目… > <存储库> <!-添加elasticsearch 存储库-> <存储库> elasticsearch-releases https://artifacts.elastic.co/maven true false

  ...


<!-将x-pack jar添加为依赖项-> org.elasticsearch.client x-pack-transport {版本}

  ...



如果使用的是Gradle,则需要在文件中添加X-Pack JAR文件作为依赖项build.gradle:

储存库{ / * …其他任何储存库… * /

//添加Elasticsearch Maven存储库
maven {
name “ elastic”
url “ https://artifacts.elastic.co/maven” } }

依赖项{
编译“ org.elasticsearch.client:x-pack-transport:{version}”

/ * … * / }
如果您在公司内部使用存储库管理器(例如Nexus OSS),则需要按照以下屏幕截图添加存储库:

在Nexus中添加弹性仓库
然后在项目的pom.xml使用Maven的情况下,添加以下存储库和依赖项定义:

org.elasticsearch.client x-pack-transport {version}

local-nexus Elastic Local Nexus http://0.0.0.0:8081/repository/elasticsearch/ true false

如果您正在使用Elastic Stack安全功能,则还有更多配置步骤。请参阅Java客户端和安全性。

Elasticsearch中的 X-Pack设置

您可以配置设置,在对X-Pack功能elasticsearch.yml, kibana.yml以及logstash.yml配置文件。您还可以使用集群更新设置API动态更新某些设置 。

X-Pack功能 Elasticsearch设置 Kibana设置 Logstash设置
APM用户界面

没有

没有

跨集群复制

没有

没有

开发工具

没有

没有

图形

没有

没有

基础架构用户界面

没有

没有

日志用户界面

没有

没有

机器学习

没有

管理

没有

没有

监控方式

报告中

没有

没有

安全

稽核

没有

没有

没有

守望者

没有

没有

还有X-Pack许可证设置中 elasticsearch.yml的文件。

跨集群复制设置

可以使用集群更新设置API在活动集群上动态更新这些跨集群复制设置 。

远程恢复设置编辑
以下设置可用于对远程恢复期间传输的数据进行速率限制 :

ccr.indices.recovery.max_bytes_per_sec(动态)
限制每个节点上的总入站和出站远程恢复流量。由于此限制适用于每个节点,但是可能有许多节点同时执行远程恢复,因此远程恢复字节的总数可能远高于此限制。如果将此限制设置得太高,则存在正在进行的远程恢复将消耗过多带宽(或其他资源)的风险,这可能会破坏群集的稳定性。领导者和关注者集群都使用此设置。例如,如果将其设置为20mb领导者,则领导者将仅发送20mb/s给关注者,即使关注者正在请求并可以接受60mb/s。默认为40mb。
高级远程恢复设置编辑
可以设置以下专家设置来管理远程恢复所消耗的资源:

ccr.indices.recovery.max_concurrent_file_chunks(动态)
控制每次恢复可以并行发送的文件块请求的数量。由于多个远程恢复可能已经并行运行,因此增加此专家级别的设置可能仅在单个碎片的远程恢复未达到所配置的总入站和出站远程恢复流量的情况下才有用ccr.indices.recovery.max_bytes_per_sec。默认为5。允许的最大值为10。
ccr.indices.recovery.chunk_size(动态)
控制文件传输期间跟随者请求的块大小。默认为 1mb。
ccr.indices.recovery.recovery_activity_timeout(动态)
控制恢复活动的超时。此超时主要适用于领导者集群。领导者集群必须在内存中打开资源,以便在恢复过程中向跟随者提供数据。如果领导者在这段时间内没有收到跟随者的恢复请求,它将关闭资源。默认为60秒。
ccr.indices.recovery.internal_action_timeout(动态)
在远程恢复过程中控制单个网络请求的超时。单个操作超时可能会使恢复失败。默认为60秒。

X-Pack许可设置

您可以在elasticsearch.yml文件中配置此许可设置。有关更多信息,请参阅 许可管理。

xpack.license.self_generated.type
设置为basic(默认)以启用基本X-Pack功能。
如果设置为trial,则自动生成的许可证仅允许30天访问x-pack的所有功能。以后可以根据需要将群集降级为基本许可证。

Elasticsearch中的机器学习设置

您无需配置任何设置即可使用机器学习。默认情况下启用。

所有这些设置都可以添加到elasticsearch.yml配置文件中。还可以使用集群更新设置API在整个 集群中更新动态设置。

动态设置优先于elasticsearch.yml 文件中的设置。

通用机器学习设置编辑
node.ml
设置为true(默认)以将节点标识为机器学习节点。
如果设置为falsein elasticsearch.yml,则节点无法运行作业。如果设置为, true但xpack.ml.enabled设置为false,则node.ml设置将被忽略,并且节点无法运行作业。如果要运行作业,则集群中必须至少有一个机器学习节点。

在专用协调节点或专用主节点上,禁用node.ml角色。

xpack.ml.enabled
设置为true(默认值)以在节点上启用机器学习。
如果设置为falsein elasticsearch.yml,则在节点上禁用机器学习API。因此,该节点无法打开作业,启动数据馈送或接收与机器学习API相关的传输(内部)通信请求。它还会影响连接到该Elasticsearch实例的所有Kibana实例;您无需在这些kibana.yml文件中禁用机器学习 。有关在特定Kibana实例中禁用机器学习的更多信息,请参见 Kibana机器学习设置。

如果要在群集中使用机器学习功能,则必须在所有符合主机资格的节点上都将其 xpack.ml.enabled设置为true。这是默认行为。

xpack.ml.max_machine_memory_percent
机器学习可用于运行分析过程的机器内存的最大百分比。(这些过程与Elasticsearch JVM分开。)默认为 30百分比。该限制基于计算机的总内存,而不是当前的可用内存。作业不会分配给节点,如果这样做会导致机器学习作业的估计内存使用量超出限制。
xpack.ml.max_model_memory_limit
model_memory_limit可以为此节点上的任何作业设置 的最大属性值。如果尝试创建一个model_memory_limit属性值大于此设置值的作业,则会发生错误。当您更新此设置时,现有作业不会受到影响。有关该model_memory_limit属性的更多信息 ,请参见分析限制。
xpack.ml.max_open_jobs
节点上可以运行的最大作业数。默认为20。作业的最大数量也受内存使用量的限制,因此,如果作业的估计内存使用量高于允许的数量,则在该节点上运行的作业将少于此设置指定的数量。
xpack.ml.node_concurrent_job_allocations
opening每个节点上 可以同时处于状态的最大作业数。通常,作业在转移到open状态之前会在此状态下花费少量时间。刚打开时必须还原大型模型的作业会在该opening状态上花费更多时间。默认为2。
进阶机器学习设定编辑
这些设置用于高级用例。默认值通常就足够了:

xpack.ml.enable_config_migration(动态)
保留。
xpack.ml.max_anomaly_records(动态)
每个存储桶输出的最大记录数。默认值为 500。
xpack.ml.max_lazy_ml_nodes(动态)
延迟旋转的机器学习节点的数量。在打开第一个机器学习作业之前不需要ML节点的情况下很有用。默认值为,0并且具有的最大可接受值3。如果ML节点的当前数量>=大于此设置,则假定没有更多的惰性节点可用,因为已经提供了所需的节点数量。在设置了此设置的情况下打开作业,>0并且没有节点可以接受该作业时,该作业将保持该OPENING状态,直到将新的ML节点添加到群集并将该作业分配为在该节点上运行。

此设置假定某些外部过程能够将ML节点添加到群集。仅当与此类外部过程结合使用时,此设置才有用。

xpack.ml.process_connect_timeout(动态)
与Elasticsearch JVM分开运行的机器学习过程的连接超时。默认为10s。一些机器学习处理是由与Elasticsearch JVM分开运行的进程完成的。当此类进程启动时,它们必须连接到Elasticsearch JVM。如果此类进程在此设置指定的时间段内未连接,则认为该进程失败。默认为10s。此设置的最小值为5s。

Elasticsearch中的监视设置

默认情况下,启用监视,但禁用数据收集。要启用数据收集,请使用该xpack.monitoring.collection.enabled设置。

您可以在elasticsearch.yml文件中配置这些监视设置。还可以使用集群更新设置API在整个集群中进行 设置。

群集设置优先于elasticsearch.yml 文件中的设置。

要调整如何监控数据显示在监控界面,配置 xpack.monitoring设置中 kibana.yml。要控制如何监控数据从收集Logstash,配置 xpack.monitoring设置 在logstash.yml。

常规监控设置编辑
xpack.monitoring.enabled
设置为true(默认值)以对节点上的Elasticsearch启用Elasticsearch X-Pack监视。

要启用数据收集,还必须将设置xpack.monitoring.collection.enabled 为true。默认值为false。

监视收集设置编辑
这些xpack.monitoring.collection设置控制如何从Elasticsearch节点收集数据。

xpack.monitoring.collection.enabled(动态)
[ 6.3.0 ] 在6.3.0中添加。设置为true启用监视数据收集。当此设置为false默认值时,将不会收集Elasticsearch监视数据,并且会忽略来自其他来源(如Kibana,Beats和Logstash)的所有监视数据。
xpack.monitoring.collection.interval(动态)
不建议设置为-1禁用数据收集。 [ 6.3.0 ]在6.3.0中弃用。使用xpack.monitoring.collection.enabled设置为false。
控制收集数据样本的频率。默认为10s。如果您修改收集间隔,请将xpack.monitoring.min_interval_seconds 选项设置kibana.yml为相同的值。

xpack.monitoring.elasticsearch.collection.enabled(动态)
控制是否应收集有关Elasticsearch集群的统计信息。默认为true。这与xpack.monitoring.collection.enabled不同,后者允许您启用或禁用所有监视收集。但是,此设置只是禁用了Elasticsearch数据的收集,同时仍然允许其他数据(例如,Kibana,Logstash,Beats或APM Server监视数据)通过此群集。
xpack.monitoring.collection.cluster.stats.timeout
设置收集集群统计信息的超时时间。默认为10s。
xpack.monitoring.collection.node.stats.timeout
设置收集节点统计信息的超时时间。默认为10s。
xpack.monitoring.collection.indices(动态)
控制监控从哪个索引收集数据。默认为所有索引。将索引名称指定为以逗号分隔的列表,例如test1,test2,test3。名称可以包括通配符,例如test*。您可以在前缀前明确排除索引-。例如test*,-test3将监测,与开始的所有索引test除外test3。系统索引(例如.security *或.kibana )始终以开头.,并且通常应对其进行监视。考虑添加.到索引列表中,以确保监视系统索引。例如.,test,-test3
xpack.monitoring.collection.index.stats.timeout
设置收集索引统计信息的超时时间。默认为10s。
xpack.monitoring.collection.index.recovery.active_only
控制是否收集所有回收率。设置为true仅收集活动的恢复。默认为false。
xpack.monitoring.collection.index.recovery.timeout
设置收集恢复信息的超时时间。默认为10s。
xpack.monitoring.history.duration
设置保留期限,超过该期限将自动删除由监视导出器创建的索引。默认为7d(7天)。

此设置的最小值1d(1天)以确保正在监视某些内容,并且不能将其禁用。

此设置当前仅影响local类型出口商。使用http导出器创建的索引不会自动删除。

如果同时启用了X-Pack监视和Watcher,则也可以使用此设置来影响Watcher Cleaner服务。有关更多信息,请参阅 xpack.watcher.history.cleaner_service.enabled“ 观察者设置”中的 设置。

xpack.monitoring.exporters
配置代理在何处存储监视数据。默认情况下,代理使用本地导出程序,该导出程序为安装了该群集的群集上的监视数据编制索引。使用HTTP导出程序将数据发送到单独的监视群集。有关更多信息,请参阅本地导出器设置, HTTP导出器设置及其 工作方式。
本地导出器设置编辑
该local出口是通过监测使用的默认出口国。顾名思义,它会将数据导出到本地群集,这意味着不需要太多配置。

如果您不提供任何出口商,则监控将自动为您创建一个。如果提供了任何导出器,则不添加默认值。

xpack.monitoring.exporters。my_local:
类型:本地
type
本地出口商的值必须始终为local并且是必需的。
use_ingest
是否在每个批量请求中向集群和管道处理器提供占位符管道。默认值为true。如果被禁用,则意味着它将不使用管道,这意味着将来的发行版无法将批量请求自动升级为适合将来的请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认值为true。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。
HTTP导出器设置编辑
以下列出了http导出器可以提供的设置。所有设置均显示在您为导出器选择的名称后面:

xpack.monitoring.exporters。my_remote:
类型:http
主机:[ “ host:port” ,…]
type
HTTP导出程序的值必须始终为http并且是必需的。
host
主机支持多种格式,既可以是数组,也可以是单个值。支持的格式包括 hostname,hostname:port,http://hostname http://hostname:port,https://hostname,和 https://hostname:port。不能假定主机。如果未作为字符串的一部分提供,则默认方案始终为http,默认端口始终9200为host。

xpack.monitoring。出口商:
example1:
类型:http
主机:“ 10.1.2.3” example2:
类型:http
主机:[ “ http://10.1.2.4” ]
example3:
类型:http
主机:[ “ 10.1.2.5” ,“ 10.1.2.6” “ ]
example4:
类型:http
主机:[ ” https://10.1.2.3:9200“ ]

auth.username
如果auth.password提供了a,则需要用户名。
auth.password
的密码auth.username。
connection.timeout
HTTP连接应该等待套接字打开以请求的时间。默认值为6s。
connection.read_timeout
HTTP连接应该等待套接字发送回响应的时间。默认值为10 * connection.timeout(60s如果未设置)。
ssl
每个HTTP导出器都可以定义自己的TLS / SSL设置或继承它们。请参阅下面的“ TLS / SSL”部分。
proxy.base_path
前缀任何传出请求的基本路径,例如/base/path(例如,批量请求将作为发送/base/path/_bulk)。没有默认值。
headers
添加到每个请求的可选标头,可以帮助通过代理路由请求。

xpack.monitoring.exporters。my_remote:
标头:
X-My-Array:[abc,def,xyz]
X-My-Header:abc123
发送基于数组的标头的n时间n为数组的大小。Content-Type 并且Content-Length无法设置。监视代理程序创建的任何标头都将覆盖此处定义的任何标头。

index.name.time_format
一种用于更改默认情况下每日监控索引的默认日期后缀的机制。默认值为YYYY.MM.DD,这就是为什么每天创建索引的原因。
use_ingest
是否在每个批量请求中向监视集群和管道处理器提供占位符管道。默认值为true。如果被禁用,则意味着它将不使用管道,这意味着将来的发行版无法将批量请求自动升级为适合将来的请求。
cluster_alerts.management.enabled
是否为此集群创建集群警报。默认值为true。要使用此功能,必须启用Watcher。如果您具有基本许可证,则不会显示群集警报。
cluster_alerts.management.blacklist
防止创建特定的群集警报。它还会删除当前群集中已经存在的所有适用监视。
您可以将以下任意手表标识符添加到黑名单中:

elasticsearch_cluster_status
elasticsearch_version_mismatch
elasticsearch_nodes
kibana_version_mismatch
logstash_version_mismatch
xpack_license_expiration
例如:[“elasticsearch_version_mismatch”,“xpack_license_expiration”]。

X-Pack监控TLS / SSL设置编辑
您可以配置以下TLS / SSL设置。如果未配置设置, 则使用默认TLS / SSL设置。

xpack.monitoring.exporters. N A M E . s s l . s u p p o r t e d p r o t o c o l s 支 持 的 协 议 版 本 。 有 效 协 议 : S S L v 2 H e l l o , S S L v 3 , T L S v 1 , T L S v 1.1 , T L S v 1.2 。 默 认 为 T L S v 1.2 , T L S v 1.1 , T L S v 1 。 默 认 值 为 x p a c k . s s l . s u p p o r t e d p r o t o c o l s 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.supported_protocols 支持的协议版本。有效协议:SSLv2Hello, SSLv3,TLSv1,TLSv1.1,TLSv1.2。默认为TLSv1.2,TLSv1.1, TLSv1。默认值为xpack.ssl.supported_protocols。 xpack.monitoring.exporters. NAME.ssl.supportedprotocolsSSLv2HelloSSLv3TLSv1TLSv1.1TLSv1.2TLSv1.2TLSv1.1TLSv1xpack.ssl.supportedprotocolsxpack.monitoring.exporters.NAME.ssl.verification_mode
控制证书的验证。有效值是none, certificate和full。有关xpack.ssl.verification_mode这些值的说明,请参见。默认值为xpack.ssl.verification_mode。
xpack.monitoring.exporters.$NAME.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认值为 xpack.ssl.cipher_suites。
X-Pack监视TLS / SSL密钥和可信证书设置编辑
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。私钥和证书是可选的,如果服务器要求客户端认证进行PKI认证,则将使用私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。

PEM编码文件编辑
使用PEM编码的文件时,请使用以下设置:

xpack.monitoring.exporters. N A M E . s s l . k e y 包 含 私 钥 的 P E M 编 码 文 件 的 路 径 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.key 包含私钥的PEM编码文件的路径。 xpack.monitoring.exporters. NAME.ssl.keyPEMxpack.monitoring.exporters.NAME.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.monitoring.exporters. N A M E . s s l . s e c u r e k e y p a s s p h r a s e ( 安 全 ) 用 于 解 密 私 钥 的 密 码 。 该 值 是 可 选 的 , 因 为 密 钥 可 能 未 加 密 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.secure_key_passphrase(安全) 用于解密私钥的密码。该值是可选的,因为密钥可能未加密。 xpack.monitoring.exporters. NAME.ssl.securekeypassphrasexpack.monitoring.exporters.NAME.ssl.certificate
包含将在请求时显示的证书(或证书链)的PEM编码文件的路径。
xpack.monitoring.exporters.$NAME.ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。
Java密钥库文件编辑
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:

xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . p a t h 存 放 私 钥 和 证 书 的 密 钥 库 的 路 径 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.path 存放私钥和证书的密钥库的路径。 xpack.monitoring.exporters. NAME.ssl.keystore.pathxpack.monitoring.exporters.NAME.ssl.keystore.password
密钥库的密码。
xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . s e c u r e p a s s w o r d ( 安 全 ) 密 钥 库 的 密 码 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.secure_password(安全) 密钥库的密码。 xpack.monitoring.exporters. NAME.ssl.keystore.securepasswordxpack.monitoring.exporters.NAME.ssl.keystore.key_password
密钥库中私钥的密码。默认值与相同xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . p a s s w o r d 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.password。 xpack.monitoring.exporters. NAME.ssl.keystore.passwordxpack.monitoring.exporters.NAME.ssl.keystore.secure_key_password(安全)
密钥库中私钥的密码。
xpack.monitoring.exporters. N A M E . s s l . t r u s t s t o r e . p a t h 信 任 库 文 件 的 路 径 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.truststore.path 信任库文件的路径。 xpack.monitoring.exporters. NAME.ssl.truststore.pathxpack.monitoring.exporters.NAME.ssl.truststore.password
信任库的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password(安全)
信任库的密码。
PKCS#12文件编辑
可以将Elasticsearch配置为使用包含私有密钥,证书和应受信任的证书的PKCS#12容器文件(.p12或多个.pfx文件)。

PKCS#12文件的配置方式与Java密钥库文件相同:

xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . p a t h 包 含 私 钥 和 证 书 的 P K C S # 12 文 件 的 路 径 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.path 包含私钥和证书的PKCS#12文件的路径。 xpack.monitoring.exporters. NAME.ssl.keystore.pathPKCS12xpack.monitoring.exporters.NAME.ssl.keystore.type
进行设置PKCS12以指示密钥库是PKCS#12文件。
xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . p a s s w o r d P K C S # 12 文 件 的 密 码 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.password PKCS#12文件的密码。 xpack.monitoring.exporters. NAME.ssl.keystore.passwordPKCS12xpack.monitoring.exporters.NAME.ssl.keystore.secure_password(安全)
PKCS#12文件的密码。
xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . k e y p a s s w o r d 存 储 在 P K C S # 12 文 件 中 的 私 钥 的 密 码 。 默 认 值 与 相 同 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.key_password 存储在PKCS#12文件中的私钥的密码。默认值与相同xpack.monitoring.exporters. NAME.ssl.keystore.keypasswordPKCS12xpack.monitoring.exporters.NAME.ssl.keystore.password。
xpack.monitoring.exporters. N A M E . s s l . k e y s t o r e . s e c u r e k e y p a s s w o r d ( 安 全 ) 存 储 在 P K C S # 12 文 件 中 的 私 钥 的 密 码 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.keystore.secure_key_password(安全) 存储在PKCS#12文件中的私钥的密码。 xpack.monitoring.exporters. NAME.ssl.keystore.securekeypasswordPKCS12xpack.monitoring.exporters.NAME.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.monitoring.exporters. N A M E . s s l . t r u s t s t o r e . t y p e 进 行 设 置 P K C S 12 以 指 示 信 任 库 是 P K C S # 12 文 件 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.ssl.truststore.type 进行设置PKCS12以指示信任库是PKCS#12文件。 xpack.monitoring.exporters. NAME.ssl.truststore.typePKCS12PKCS12xpack.monitoring.exporters.NAME.ssl.truststore.password
PKCS#12文件的密码。
xpack.monitoring.exporters.$NAME.ssl.truststore.secure_password(安全)
PKCS#12文件的密码。
PKCS#11令牌编辑
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。

PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:

xpack.monitoring.exporters. N A M E . k e y s t o r e . t y p e 进 行 设 置 P K C S 11 以 指 示 应 将 P K C S # 11 令 牌 用 作 密 钥 库 。 x p a c k . m o n i t o r i n g . e x p o r t e r s . NAME.keystore.type 进行设置PKCS11以指示应将PKCS#11令牌用作密钥库。 xpack.monitoring.exporters. NAME.keystore.typePKCS11PKCS11xpack.monitoring.exporters.NAME.truststore.type
设置此项以PKCS11指示应将PKCS#11令牌用作信任库。

Elasticsearch中的 SQL访问设置

默认情况下,SQL Access是启用的。您可以在elasticsearch.yml文件中配置这些SQL Access设置。

常规SQL访问设置编辑
xpack.sql.enabled
设置为false禁用节点上的SQL Access。

Elasticsearch中的 Watcher设置

您可以xpack.notification在中配置设置,elasticsearch.yml以发送设置的Watcher并通过电子邮件, HipChat, Slack和 PagerDuty发送通知 。还可以使用集群更新设置API在整个集群中更新动态设置。

常规观察者设置编辑
xpack.watcher.enabled
设置为false禁用节点上的Watcher。
xpack.watcher.encrypt_sensitive_data
设置为true加密敏感数据。如果启用此设置,则还必须指定该xpack.watcher.encryption_key设置。有关更多信息,请参阅在Watcher中加密敏感数据。
xpack.watcher.encryption_key(安全)
指定包含用于加密敏感数据的密钥的文件的路径。如果xpack.watcher.encrypt_sensitive_data设置为true,则需要此设置。有关更多信息,请参阅在Watcher中加密敏感数据。
xpack.watcher.history.cleaner_service.enabled
[ 6.3.0 ]在6.3.0中添加。默认更改为true。

设置为true(默认值)以启用更清洁的服务。如果此设置为 true,则xpack.monitoring.enabled还必须在true启用本地导出程序的情况下将该设置设置为。当Cleaner服务.watcher-history*确定旧版本的Watcher索引(例如)过时,它将删除它们。Watcher索引的持续时间由xpack.monitoring.history.duration设置决定 ,默认设置为7天。有关该设置的更多信息,请参阅监视设置。

xpack.http.proxy.host
指定用于连接到HTTP服务的代理服务器的地址。
xpack.http.proxy.port
指定用于连接到代理服务器的端口号。
xpack.http.default_connection_timeout
启动连接时等待直到请求中止的最大时间。
xpack.http.default_read_timeout
请求中止之前,两个数据包之间的最大不活动时间。
xpack.http.max_response_size
指定允许HTTP响应具有的最大大小,默认为 10mb,最大可配置值为50mb。
观察者TLS / SSL设置编辑
您可以配置以下TLS / SSL设置。如果未配置设置, 则使用默认TLS / SSL设置。

xpack.http.ssl.supported_protocols
支持的协议版本。有效协议:SSLv2Hello, SSLv3,TLSv1,TLSv1.1,TLSv1.2。默认为TLSv1.2,TLSv1.1, TLSv1。默认值为xpack.ssl.supported_protocols。
xpack.http.ssl.verification_mode
控制证书的验证。有效值是none, certificate和full。有关xpack.ssl.verification_mode这些值的说明,请参见。默认值为xpack.ssl.verification_mode。
xpack.http.ssl.cipher_suites
支持的密码套件可以在Oracle的 Java密码体系结构文档中找到。默认值为 xpack.ssl.cipher_suites。
Watcher TLS / SSL密钥和可信证书设置编辑
以下设置用于指定通过SSL / TLS连接进行通信时应使用的私钥,证书和受信任证书。私钥和证书是可选的,如果服务器要求客户端认证进行PKI认证,则将使用私钥和证书。如果未指定以下任何设置,则使用默认TLS / SSL设置。

PEM编码文件编辑
使用PEM编码的文件时,请使用以下设置:

xpack.http.ssl.key
包含私钥的PEM编码文件的路径。
xpack.http.ssl.key_passphrase
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.http.ssl.secure_key_passphrase(安全)
用于解密私钥的密码。该值是可选的,因为密钥可能未加密。
xpack.http.ssl.certificate
包含将在请求时显示的证书(或证书链)的PEM编码文件的路径。
xpack.http.ssl.certificate_authorities
应当信任的PEM编码证书文件的路径列表。
Java密钥库文件编辑
使用包含私钥,证书和应信任的证书的Java密钥库文件(JKS)时,请使用以下设置:

xpack.http.ssl.keystore.path
存放私钥和证书的密钥库的路径。
xpack.http.ssl.keystore.password
密钥库的密码。
xpack.http.ssl.keystore.secure_password(安全)
密钥库的密码。
xpack.http.ssl.keystore.key_password
密钥库中私钥的密码。默认值与相同xpack.http.ssl.keystore.password。
xpack.http.ssl.keystore.secure_key_password(安全)
密钥库中私钥的密码。
xpack.http.ssl.truststore.path
信任库文件的路径。
xpack.http.ssl.truststore.password
信任库的密码。
xpack.http.ssl.truststore.secure_password(安全)
信任库的密码。
PKCS#12文件编辑
可以将Elasticsearch配置为使用包含私有密钥,证书和应受信任的证书的PKCS#12容器文件(.p12或多个.pfx文件)。

PKCS#12文件的配置方式与Java密钥库文件相同:

xpack.http.ssl.keystore.path
包含私钥和证书的PKCS#12文件的路径。
xpack.http.ssl.keystore.type
进行设置PKCS12以指示密钥库是PKCS#12文件。
xpack.http.ssl.keystore.password
PKCS#12文件的密码。
xpack.http.ssl.keystore.secure_password(安全)
PKCS#12文件的密码。
xpack.http.ssl.keystore.key_password
存储在PKCS#12文件中的私钥的密码。默认值与相同xpack.http.ssl.keystore.password。
xpack.http.ssl.keystore.secure_key_password(安全)
存储在PKCS#12文件中的私钥的密码。
xpack.http.ssl.truststore.path
包含要信任的证书的PKCS#12文件的路径。
xpack.http.ssl.truststore.type
进行设置PKCS12以指示信任库是PKCS#12文件。
xpack.http.ssl.truststore.password
PKCS#12文件的密码。
xpack.http.ssl.truststore.secure_password(安全)
PKCS#12文件的密码。
PKCS#11令牌编辑
可以将Elasticsearch配置为使用PKCS#11令牌,该令牌包含私钥,证书和应信任的证书。

PKCS#11令牌需要在JVM级别进行其他配置,并且可以通过以下设置启用:

xpack.http.keystore.type
进行设置PKCS11以指示应将PKCS#11令牌用作密钥库。
xpack.http.truststore.type
设置此项以PKCS11指示应将PKCS#11令牌用作信任库。
电子邮件通知设置编辑
您可以在中配置以下电子邮件通知设置 elasticsearch.yml。有关通过电子邮件发送通知的更多信息,请参阅“ 配置电子邮件操作”。

xpack.notification.email.account
指定用于通过电子邮件发送通知的帐户信息。您可以指定以下电子邮件帐户属性:

profile(动态)
用于构建从帐户发送的MIME消息 的电子邮件配置文件。有效值:standard,gmail和 outlook。默认为standard。
email_defaults.*(动态)
一组可选的电子邮件属性,用作帐户发送的电子邮件的默认值。有关支持的属性,请参阅 电子邮件操作属性。
smtp.auth(动态)
设置为true尝试使用AUTH命令对用户进行身份验证。默认为false。
smtp.host(动态)
要连接的SMTP服务器。需要。
smtp.port(动态)
要连接的SMTP服务器端口。默认为25。
smtp.user(动态)
SMTP的用户名。需要。
smtp.password(动态)
指定的SMTP用户的密码。 [ 6.6.0 ]在6.6.0中已弃用。
smtp.secure_password(安全)
指定的SMTP用户的密码。
smtp.starttls.enable(动态)
设置为true启用以STARTTLS 在发出任何登录命令之前使用命令(如果服务器支持)将连接切换到TLS保护的连接。请注意,必须配置适当的信任库,以便客户端信任服务器的证书。默认为false。
smtp.starttls.required(动态)
如果为true,STARTTLS则将是必需的。如果该命令失败,则连接将失败。默认为false。
smtp.ssl.trust(动态)
假定是受信任的并且禁用了证书验证的SMTP服务器主机的列表。如果设置为“ *”,则所有主机都是受信任的。如果设置为以空格分隔的主机列表,则这些主机是可信任的。否则,信任取决于服务器提供的证书。
smtp.timeout(动态)
套接字读取超时。默认值为两分钟。
smtp.connection_timeout(动态)
套接字连接超时。默认值为两分钟。
smtp.write_timeout(动态)
套接字写入超时。默认值为两分钟。
smtp.local_address(动态)
发送电子邮件时可配置的本地地址。默认情况下未配置。
smtp.local_port(动态)
发送电子邮件时可配置的本地端口。默认情况下未配置。
smtp.send_partial(动态)
尽管收件人地址之一无效,但仍发送电子邮件。
smtp.wait_on_quit(动态)
如果设置为false,则发送QUIT命令并关闭连接。如果设置为true,则发送QUIT命令并等待答复。默认为True。
xpack.notification.email.html.sanitization.allow
指定电子邮件通知中允许的HTML元素。有关更多信息,请参见 配置HTML清理选项。您可以指定单个HTML元素和以下HTML功能组:

_tables
表中的所有相关的元素:

, 和

_blocks
以下块元素:

    1. ,和

      _formatting
      下面内嵌格式化元素: ,,
      ,,和
      _links
      的与元素href:该指向URL使用以下协议属性http,https 和mailto。
      _styles
      style所有元素上 的属性。请注意,还对CSS属性进行了清理,以防止XSS攻击。
      img
      img:all
      所有图像(外部和嵌入式)。
      img:embedded
      仅嵌入图像。嵌入式图像只能cid:在其src属性中使用 URL协议。
      xpack.notification.email.html.sanitization.disallow
      指定电子邮件通知中不允许的HTML元素。您可以指定单个HTML元素和HTML功能组。
      xpack.notification.email.html.sanitization.enabled
      设置为false完全禁用HTML卫生。不建议。默认为true。
      HipChat通知设置编辑
      您可以在中配置以下HipChat通知设置 elasticsearch.yml。有关通过HipChat发送通知的更多信息,请参阅配置HipChat操作。

在6.7.0中已弃用。
由于Hipchat已停止运行,因此已不建议使用Hipchat通知

xpack.notification.hipchat
指定用于通过HipChat发送通知的帐户信息。您可以指定以下HipChat帐户属性:
profile
该HipChat帐户配置文件使用方法:integration, user或v1。需要。
auth_token
用于访问HipChat API的身份验证令牌。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_auth_token(安全)
用于访问HipChat API的身份验证令牌。需要。
host
HipChat服务器主机名。默认为api.hipchat.com。
port
HipChat服务器端口号。默认为443。
room
您要向其发送消息的房间。如果将profile设置为,则必须指定integration。对user或vi个人资料无效。
user
用于发送消息的HipChat用户帐户。指定为电子邮件地址。如果将profile设置为,则必须指定 user。对integration 或v1个人资料无效。
message.format
消息的格式:text或html。默认为html。
message.color
房间中通知的背景颜色。默认为 yellow。
message.notify
指示是否应主动通知房间中的人。默认为false。
松弛通知设置编辑
您可以在中配置以下Slack通知设置 elasticsearch.yml。有关通过Slack发送通知的更多信息,请参阅配置Slack操作。

xpack.notification.slack
指定用于通过Slack发送通知的帐户信息。您可以指定以下Slack帐户属性:

url
用于将消息发布到Slack的传入Webhook URL。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_url(安全)
用于将消息发布到Slack的传入Webhook URL。需要。
message_defaults.from
要显示在Slack消息中的发件人名称。默认为手表ID。
message_defaults.to
您要向其发送消息的默认Slack频道或组。
message_defaults.icon
显示在Slack消息中的图标。覆盖传入的Webhook的已配置图标。接受图像的公共URL。
message_defaults.text
默认消息内容。
message_defaults.attachment
默认邮件附件。松弛的邮件附件使您可以创建格式更丰富的邮件。指定为 Slack附件文档中定义的数组 。
吉拉通知设置编辑
您可以在中配置以下Jira通知设置 elasticsearch.yml。有关使用通知在Jira中创建问题的更多信息,请参阅“ 配置Jira操作”。

xpack.notification.jira
指定用于使用通知在Jira中创建问题的帐户信息。您可以指定以下Jira帐户属性:

url
Jira软件服务器的URL。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_url(安全)
Jira软件服务器的URL。需要。
user
连接到Jira软件服务器的用户名。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_user(安全)
连接到Jira软件服务器的用户名。需要。
password
连接到Jira软件服务器的用户密码。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_password(安全)
连接到Jira软件服务器的用户密码。需要。
issue_defaults
在Jira中创建的问题的默认字段值。有关更多信息,请参见 Jira动作属性。可选的。
PagerDuty通知设置编辑
您可以在中配置以下PagerDuty通知设置 elasticsearch.yml。有关通过PagerDuty发送通知的更多信息,请参阅配置PagerDuty操作。

xpack.notification.pagerduty
指定用于通过PagerDuty发送通知的帐户信息。您可以指定以下PagerDuty帐户属性:

name
与您用于访问PagerDuty的API密钥关联的PagerDuty帐户的名称。需要。
service_api_key
用于访问PagerDuty 的 PagerDuty API密钥。需要。 [ 6.6.0 ]在6.6.0中已弃用。
secure_service_api_key(安全)
用于访问PagerDuty 的 PagerDuty API密钥。需要。
event_defaults
PagerDuty事件属性的 默认值 。可选的。

description
一个字符串,其中包含PagerDuty事件的默认描述。如果未配置默认值,则每个PagerDuty操作必须指定一个 description。
incident_key
一个字符串,其中包含发送PagerDuty事件时使用的默认事件密钥。
client
一个字符串,它指定默认的监视客户端。
client_url
默认监视客户端的URL。
event_type
默认事件类型。有效值:trigger,resolve,acknowledge。
attach_payload
默认情况下是否提供监视有效内容作为事件的上下文。有效值:true,false。

X-Pack的引导检查

除了Elasticsearch引导检查之外,还有一些特定于X-Pack功能的检查。

加密敏感数据检查编辑
如果您使用Watcher并选择了加密敏感数据(通过设置 xpack.watcher.encrypt_sensitive_data为true),则还必须在安全设置存储区中放置一个密钥。

要通过此引导检查,必须xpack.watcher.encryption_key 在群集中的每个节点上设置on。有关更多信息,请参阅在Watcher中加密敏感数据。

PKI领域检查编辑
如果使用Elasticsearch安全功能和公钥基础结构(PKI)领域,则必须在群集上配置传输层安全性(TLS),并在网络层(传输层或http)上启用客户端身份验证。有关更多信息,请参阅PKI用户身份验证和在群集上设置TLS。

要通过此引导检查,如果启用了PKI领域,则必须在至少一个网络通信层上配置TLS并启用客户端身份验证。

角色映射检查编辑
如果您使用native或以外的file领域对用户进行身份验证,则必须创建角色映射。这些角色映射定义将哪些角色分配给每个用户。

如果使用文件管理角色映射,则必须配置YAML文件并将其复制到群集中的每个节点。默认情况下,角色映射存储在中 ES_PATH_CONF/role_mapping.yml。或者,您可以为每种领域指定一个不同的角色映射文件,并在elasticsearch.yml文件中指定其位置。有关更多信息,请参见 使用角色映射文件。

要通过此引导检查,角色映射文件必须存在并且必须有效。角色映射文件中列出的专有名称(DN)也必须有效。

SSL / TLS检查编辑
在6.0和更高版本中,如果您具有金,白金或企业许可证,并且启用了Elasticsearch安全功能,则必须为节点间通信配置SSL / TLS。

使用回送接口的单节点群集没有此要求。有关更多信息,请参见 加密通信。

要通过此引导检查,必须在集群上设置TLS。

令牌SSL检查编辑
如果您使用Elasticsearch安全功能并且启用了内置令牌服务,则必须将集群配置为对HTTP接口使用SSL / TLS。必须使用HTTPS才能使用令牌服务。

特别是,如果在文件中将xpack.security.authc.token.enabled和http.enabled设置为true,则elasticsearch.yml还必须将设置 xpack.security.http.ssl.enabled为true。有关这些设置的更多信息,请参阅“ 安全性设置”和“ HTTP”。

要通过此引导检查,必须启用HTTPS或禁用内置令牌服务。

你可能感兴趣的:(ElasticSearch,Java,elasticsearch,java)