Elasticsearch简介
Elasticsearch入门
启动并运行Elasticsearch
要将Elasticsearch用作测试驱动器,您可以 在Elasticsearch Service上创建 托管部署,或在您自己的Linux,macOS或Windows计算机上设置多节点Elasticsearch集群。
在云服务器上运行Elasticsearch
在Elasticsearch Service上创建部署时,该服务与Kibana和APM一起配置三节点Elasticsearch集群。
要创建部署:
- 注册免费试用版, 然后验证您的电子邮件地址。
- 为您的帐户设置密码。
- 单击创建部署。
运行Elasticsearch本地的Linux,MacOS或视窗
在Elasticsearch Service上创建部署时,将自动设置一个主节点和两个数据节点。通过从tar或zip存档安装,您可以在本地启动Elasticsearch的多个实例,以查看多节点集群的行为。
要在本地运行三节点的Elasticsearch集群:
1.下载适用于您的操作系统的Elasticsearch存档:
Linux: elasticsearch-7.5.1-linux-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz
macOS: elasticsearch-7.5.1-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-darwin-x86_64.tar.gz
Windows: elasticsearch-7.5.1-windows-x86_64.zip
2.解压压缩文件:
Linux:
tar -xvf elasticsearch-7.5.1-linux-x86_64.tar.gz
macOS:
tar -xvf elasticsearch-7.5.1-darwin-x86_64.tar.gz
Windows PowerShell:
Expand-Archive elasticsearch-7.5.1-windows-x86_64.zip
从 bin
目录启动Elasticsearch:
cd elasticsearch-7.5.1/bin
./elasticsearch
Windows:
cd elasticsearch-7.5.1\bin
.\elasticsearch.bat
现在,您已经建立并运行了一个单节点Elasticsearch集群!
4.启动另外两个Elasticsearch实例,以便您可以看到典型的多节点集群的行为。您需要为每个节点指定唯一的数据和日志路径。
Linux和macOS:
./elasticsearch -Epath.data=data2 -Epath.logs=log2
./elasticsearch -Epath.data=data3 -Epath.logs=log3
Windows:
.\elasticsearch.bat -E path.data=data2 -E path.logs=log2
.\elasticsearch.bat -E path.data=data3 -E path.logs=log3
附加节点被分配了唯一的ID。因为您在本地运行有三个节点,所以它们会自动与第一个节点一起加入集群。
5.使用cat health API验证三节点集群是否正在运行。cat API以比原始JSON更易于阅读的格式返回有关集群和索引的信息。
您可以通过向Elasticsearch REST API提交HTTP请求来直接与集群交互。本指南中的大多数示例使您能够复制适当的cURL命令并将请求从命令行提交到本地Elasticsearch实例。如果已安装并正在运行Kibana,则也可以打开Kibana并通过开发控制台提交请求。
当您准备开始在自己的应用程序中使用Elasticsearch时,您将需要签出 Elasticsearch语言客户端。
GET /_cat/health?v
该响应表明elasticsearch
集群的状态为,green
并且它具有三个节点:
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1565052807 00:53:27 elasticsearch green 3 3 6 3 0 0 0 0 - 100.0%
如果只运行一个Elasticsearch实例,群集状态将保持黄色。单个节点群集功能齐全,但无法将数据复制到另一个节点以提供恢复能力。副本分片必须可用,群集状态才能为绿色。如果群集状态为红色,则某些数据不可用。
其他安装选择
从存档文件安装Elasticsearch,使您可以轻松地在本地安装和运行多个实例,以便进行尝试。要运行一个实例,您可以在Docker容器中运行Elasticsearch,在Linux上使用DEB或RPM软件包安装Elasticsearch,在macOS上使用Homebrew进行安装,或者在Windows上使用MSI软件包安装程序进行安装。有关更多信息,请参见安装Elasticsearch。
设置Elasticsearch
安装Elasticsearch
从Linux或MacOS上的存档安装Elasticsearch
下载适用于您的操作系统的Elasticsearch:
Linux:elasticsearch-7.5.1-linux-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz
macOS: elasticsearch-7.5.1-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-darwin-x86_64.tar.gz
Windows:elasticsearch-7.5.1-windows-x86_64.zip
解压压缩文件:
Linux:
tar -xvf elasticsearch-7.5.1-linux-x86_64.tar.gz
macOS:
tar -xvf elasticsearch-7.5.1-darwin-x86_64.tar.gz
Windows PowerShell:
Expand-Archive elasticsearch-7.5.1-windows-x86_64.zip
在启动之前我们可以修改一下ElasticSearch的配置,我们进入到config目录:
找到:#network.host: 192.168.0.1
修改:network.host: 0.0.0.0
修改成 0.0.0.0表示任何IP都可以访问当前ElasticSearch,你也可以指定哪些IP才可以访问。
cd elasticsearch-7.5.1/config
vi elasticsearch.yml
在Elasticsearch中如果,network.host不是localhost或者127.0.0.1的话,就会认为是生产环境会对环境的要求比较高,我们的测试环境不一定能够满足,一般情况下需要修改2处配置,如果直接生产环境可以忽略,如下:
1.修改jvm启动参数
vim conf/jvm.options
-Xms128m #根据自己的机器配置修改
-Xmx128m
2.一个进程在VMAs(虚拟内存区域)创建内存映射最大数量
vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p #配置生效
从bin目录启动Elasticsearch:
Linux和macOS:
cd elasticsearch-7.5.1/bin
./elasticsearch
Windows:
cd elasticsearch-7.5.1\bin
.\elasticsearch.bat
启动是有可能会出现如下两个错误:
启动出现错误【1】:
ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, d iscovery.seed_providers, cluster.initial_master_nodes] must be configured [2019-06-03T07:05:44,761][INFO ][o.e.n.Node ] [hz] stopping ... [2019-06-03T07:05:44,788][INFO ][o.e.n.Node ] [hz] stopped [2019-06-03T07:05:44,788][INFO ][o.e.n.Node ] [hz] closing ... [2019-06-03T07:05:44,801][INFO ][o.e.n.Node ] [hz] closed [2019-06-03T07:05:44,804][INFO ][o.e.x.m.p.NativeController] [hz] Native controller process has stopped - no ne w native processes can be started |
---|
解决办法:
# 修改config/elasticsearch.yml下约第23行,放开node.name注释,可更改名称
node.name: node-1
启动出现错误【2】:
ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured |
---|
解决办法:
# 以下三个配置项,你至少要配置一项
# [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]
cluster.initial_master_nodes: ["node-1"]
# 这里的node-1就是node-name配置项的值
检查Elasticsearch运行
您可以测试你的Elasticsearch节点通过发送一个HTTP请求:
http://192.168.160.129:9200/
应该会给您返回这样的答复:
{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "xKGXT35aQpy2f7yznRbL7A",
"version" : {
"number" : "7.5.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96",
"build_date" : "2019-12-16T22:57:37.835892Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
日志打印到stdout可以使用命令行上-q或--quiet选项被禁用。
作为后台启动
要将Elasticsearch作为后台程序运行,请在命令中指定-d
,然后使用-p
将进程ID记录在文件中:
./bin/elasticsearch -d -p pid
日志消息可以在$ES_HOME/logs/
目录中找到。
要关闭Elasticsearch,请终止pid
文件中记录的进程ID:
pkill -F pid
在命令行中配置Elasticsearch$ES_HOME/config/elasticsearch.yml
默认情况下,Elasticsearch从文件中加载其配置。
可以在命令行上使用以下-E
语法在配置文件中指定设置:
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1
通常,任何群集范围的设置(如 cluster.name)都应添加到 elasticsearch.yml 配置文件中,而任何特定于节点的设置(如node.name)可以在命令行上指定。
Elasticsearch目录布局
存档是完全自包含的。默认情况下,所有文件和目录都包含在$ES_HOME中,即解压缩存档时创建的目录。
这非常方便,因为您不必创建任何目录即可开始使用Elasticsearch,卸载Elasticsearch与删除$ES_HOME目录一样简单。但是,建议更改配置目录、数据目录和日志目录的默认位置,以便以后不会删除重要数据。
类型 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home | Elasticsearch主目录或$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
设置JVM选项
您几乎不需要更改Java虚拟机(JVM)选项。如果这样做,最可能的更改是设置堆大小。本文档的其余部分详细说明了如何设置JVM选项。
设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options
配置文件。该文件的默认位置是config/jvm.options
此文件包含使用特殊语法的以行分隔的JVM参数列表:
仅由空格组成的行将被忽略
以开头的行#
被视为注释,并被忽略
# this is a comment
行开头一个 a
被视为独立于 JVM 版本应用的 JVM 选项
-Xmx2g
行以数字开头,后跟一个 :
其次一个 -
被视为是只适用于JVM的版本号相匹配的JVM选项
8:-Xmx2g
行以数字开头,后跟一个 -
其次一个 :
被视为 JVM 选项,仅当 JVM 的版本大于或等于所配置的版本号
8-:-Xmx2g
行以数字开头,后跟一个 -
后跟一个数字,后跟一个 :
被视为 JVM 选项,仅当 JVM 的版本位于两个数字范围内时才适用
8-9:-Xmx2g
所有其他行被拒绝
您可以将自定义JVM标志添加到此文件,然后将此配置签入版本控制系统。
设置Java虚拟机选项的另一种机制是通过ES_JAVA_OPTS
环境变量。例如:
export 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
命令:
bin/elasticsearch-keystore create
文件elasticsearch.keystore
将与elasticsearch.yml
一起创建。
列出密钥库中的设置
密钥库中的设置列表可通过以下list
命令获得:
bin/elasticsearch-keystore list
添加字符串设置
可以使用以下add
命令来添加敏感的字符串设置,例如云插件的身份验证凭据:
bin/elasticsearch-keystore add the.setting.name.to.set
该工具将提示您输入设置值。要通过stdin传递值,请使用--stdin
标志:
cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set
记录配置
审核设置
跨集群复制设置
转换设定
索引生命周期管理设置
许可设置
机器学习设置
监控设定
安全设定
SQL访问设置
观察者设置
重要的Elasticsearch配置
path.data 和 path.logs
如果使用 .zip 或 .tar.gz 存档,则数据和日志目录是 $ES_HOME 的子文件夹。如果这些重要文件夹保留在其默认位置,则在将elasticsearch升级到新版本时,它们被删除的风险很高。
在生产使用中,您几乎肯定会想要更改数据和日志文件夹的位置:
path:
logs: /var/log/elasticsearch
data: /var/data/elasticsearch
RPM和Debian发行版已经设置数据和日志的自定义路径。
path.data 设置可以设置为多个路径,在这种情况下,所有路径都将用于存储数据(尽管属于单个分片的文件都将存储在相同的数据路径上):
path:
data:
- /mnt/elasticsearch_1
- /mnt/elasticsearch_2
- /mnt/elasticsearch_3
cluster.name
节点只有在与群集中的所有其他节点共享其cluster.name时才能加入群集。默认名称是elasticsearch,但应将其更改为描述群集用途的适当名称。
cluster.name: logging-prod
请确保不要在不同的环境中重用相同的群集名称,否则最终可能会有节点加入错误的群集。
node.name
Elasticsearch使用node.name作为Elasticsearch的特定实例的可读标识符,因此它包含在许多 API 的响应中。它默认为计算机在Elasticsearch启动时具有的主机名,但可以在elasticsearch.yml 中显式配置,如下所示:
node.name: prod-data-2
network.host
默认情况下,Elasticsearch仅结合回环地址 - 例如127.0.0.1和[:: 1]。这足以在服务器上运行一个单一的开发节点。
事实上,不止一个节点可以从同一$ ES_HOME位置的单一节点上启动。这可能是用于测试Elasticsearch的能力,形成集群是有用的,但它是不推荐在产品的配置。
为了形成与其他服务器节点的集群,您的节点将需要绑定到一个非回送地址。虽然有许多网络设置,通常都需要配置为network.host:
network.host: 192.168.1.10
默认情况下,Elasticsearch假定您正在开发模式下工作。如果上述任何设置配置不正确,将发出警告写入日志文件,但您将能够启动并运行Elasticsearch节点。
一旦您配置网络设置(如 network.host),Elasticsearch就会假定您正在迁移到生产环境,并将上述警告升级到异常。这些异常将阻止Elasticsearch节点启动。这是一项重要的安全措施,可确保不会因服务器配置不当而丢失数据。
发现和集群形成设置
在投入生产之前,应配置两个重要的发现和集群形成设置,以便集群中的节点可以彼此发现并选举一个主节点。
discovery.seed_hosts
开箱即用,无需任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描本地端口9300至9305,以尝试连接到在同一服务器上运行的其他节点。这提供了自动群集体验,而无需进行任何配置。
如果要与其他主机上的节点组成集群,则必须使用该discovery.seed_hosts设置来提供集群中其他主机 的列表,这些主机符合主机要求,并且可能处于活动状态且可联系,以播种发现过程。此设置通常应包含集群中所有符合主机要求的节点的地址。此设置包含主机数组或逗号分隔的字符串。每个值都应采用host:port或的形式host(如果未设置,则port 默认为设置的transport.profiles.default.port初始 值transport.port)。请注意,IPv6主机必须放在方括号中。此设置的默认值为127.0.0.1, [::1]。
cluster.initial_master_nodes
首次启动全新的Elasticsearch集群时,会出现一个集群引导步骤,该步骤确定了在第一次选举中便对其票数进行计数的主资格节点的集合。在开发模式下,未配置发现设置,此步骤由节点自己自动执行。由于这种自动引导从本质上讲是不安全的,因此当您在生产模式下启动全新的集群时,必须显式列出符合资格的主机节点,并在第一次选举中对其投票进行计数。使用设置来cluster.initial_master_nodes
设置此列表。重新启动群集或将新节点添加到现有群集时,不应使用此设置。
discovery.seed_hosts:
- 192.168.1.10:9300
- 192.168.1.11 #标识1
- seeds.mydomain.com #标识2
cluster.initial_master_nodes: #标识3
- master-node-a
- master-node-b
- master-node-c
标识1:如果未指定transport.profiles.default.port
,transport.port
则端口将默认为,并回退为
标识2:如果主机名解析为多个IP地址,则该节点将尝试在所有解析的地址处发现其他节点。
标识3:初始主节点应通过其标识 node.name,默认为其主机名。确保中的值 完全cluster.initial_master_nodes匹配node.name。如果您使用完全限定的域名(例如,将其 master-node-a.example.com用作节点名称),则必须在此列表中使用完全限定的名称。相反,如果node.name是裸机主机名而没有任何尾随限定符,则还必须省略中的尾随限定符cluster.initialmasternodes。
设置堆大小
默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1GB的堆。在进入生产阶段时,配置堆大小以确保Elasticsearch有足够可用的堆非常重要。
Elasticsearch将通过(最小堆大小)和(最大堆大小)设置分配jvm.options中指定的整个堆 。您应该将这两个设置设置为彼此相等。Xms Xmx
这些设置的值取决于服务器上可用的RAM数量:
- 设置Xmx和Xms你的物理内存不超过50%。Elasticsearch出于JVM堆以外的目的而需要内存,因此为此留出空间很重要。例如,Elasticsearch使用堆外缓冲区来进行有效的网络通信,依靠操作系统的文件系统缓存来有效地访问文件,而JVM本身也需要一些内存。观察Elasticsearch过程使用的内存多于该Xmx设置配置的限制,这是正常的。
Elasticsearch可用的堆越多,它可用于其内部缓存的内存就越多,但它留给操作系统用于文件系统缓存的内存就越少。同样,较大的堆可能导致较长的垃圾回收暂停。
以下是有关如何通过jvm.options文件设置堆大小的示例:
-Xms2g #1
-Xmx2g #2
- 将最小堆大小设置为2g。
- 将最大堆大小设置为2g。
也可以通过环境变量设置堆大小。这可以通过注释掉文件中的Xms和Xmx设置,jvm.options然后通过ES_JAVA_OPTS以下方式设置这些值来完成:
ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch #1
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch #2
- 将最小和最大堆大小设置为2GB。
- 将最小和最大堆大小设置为4000MB。
- Windows服务的堆配置与上述不同。可以为Windows服务初始填充的值可以如上所述配置,但在安装服务后会有所不同。有关其他详细信息,请查阅Windows服务文档。
重要的系统配置
虚拟内存
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。
这可以通过在开始Elasticsearch之前设置 ulimit-u 4096
,或者通过在/etc/security/limits.conf中将nproc
设置为4096
来实现,注意设置这些配置都要用root用户。
当作为服务运行时,程序包分发systemd
将自动为Elasticsearch进程配置线程数。无需其他配置。
引导检查
启动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 -F pid
RPM和Debian软件包中提供的启动脚本负责为您启动和停止Elasticsearch进程。
存档包(.zip)
如果您在Windows上使用.zip软件包安装了Elasticsearch ,则可以从命令行启动Elasticsearch。如果您希望Elasticsearch在启动时自动启动而无需任何用户交互,则将Elasticsearch作为服务安装。
在命令行中运行Elasticsearch
可以从命令行启动Elasticsearch,如下所示:
.\bin\elasticsearch.bat
默认情况下,Elasticsearch在前台运行,将其日志打印到STDOUT
,可以通过按Ctrl-C
来停止。
Debian软件包
安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统使用的是SysVinit
还是systemd
(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:
ps -p 1
使用SysV运行Elasticsearchinit
使用update-rc.d
命令将Elasticsearch配置为在系统启动时自动启动:
sudo update-rc.d elasticsearch defaults 95 10
可以使用以下service
命令启动和停止Elasticsearch:
sudo -i service elasticsearch start
sudo -i service elasticsearch stop
如果Elasticsearch由于任何原因启动失败,它将把失败原因打印到STDOUT。日志文件可以在/var/log/elasticsearch/
中找到。
使用systemd运行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
日志中记录信息。要启用日记记录,elasticsearch.service
文件中的 ExecStart
命令行中删除 --quiet
选项。
启用systemd
日志记录后,可以使用journalctl
命令提供日志记录信息:
停止Elasticsearch
Elasticsearch的有序关闭可确保Elasticsearch有机会清理和关闭未使用的资源。例如,以有序方式关闭的节点将其自身从群集中删除,将跨日志同步到磁盘,并执行其他相关的清理活动。您可以通过适当地停止Elasticsearch来帮助确保有序关闭。
将节点添加到集群
启动Elasticsearch实例时,将启动节点。Elasticsearch群集是具有相同cluster.name
属性的一组节点。当节点加入或离开群集时,群集会自动自行重组,以在可用节点之间均匀分布数据。
如果运行的是Elasticsearch的单个实例,则具有一个节点的群集。所有主分片都驻留在单个节点上。无法分配任何副本分片,因此群集状态仍为黄色。群集功能齐全,但发生故障时有数据丢失的风险。
将节点添加到群集以提高其容量和可靠性。默认情况下,节点既是数据节点,又有资格被选为控制群集的主节点。您还可以为特定目的配置新节点,例如处理引入请求。有关详细信息,请参阅Nodes。
向群集添加更多节点时,它会自动分配副本分片。当所有主分片和副本分片都处于活动状态时,群集状态将变为绿色。
要将节点添加到群集:
- 设置新的Elasticsearch实例。
- 在其
cluster.name
属性中指定群集的名称。例如,要将节点添加到日志记录程序集群,在Elasticsearch.yml
中设置cluster.name: "logging-prod"
。 - 启动Elasticsearch。节点自动发现并加入指定的群集。
有关发现和分片分配的更多信息,请参阅 发现和集群形成 以及分片分配和集群级路由。
全集群重新启动和滚动重启
在某些情况下,您需要执行全集群重启或滚动重启。在完全集群重新启动的情况下,您将关闭并重新启动集群中的所有节点,而在滚动重新启动的情况下,一次将仅关闭一个节点,因此服务不会中断。
全集群重启
1.禁用分片分配。
关闭节点时,分配过程将等待index.unassigned.node_left.delayed_timeout
一分钟(默认情况下为一分钟),然后开始将该节点上的分片复制到集群中的其他节点,这可能涉及大量I / O。由于该节点不久将要重新启动,因此该I / O是不必要的。您可以通过在关闭节点之前禁用副本分配来避免争分夺秒:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
2.停止索引并执行同步刷新。
执行同步刷新可加快分片恢复。
POST _flush/synced
执行同步刷新时,请检查响应以确保没有故障。响应正文中列出了由于挂起的索引操作而失败的同步刷新操作,尽管请求本身仍返回 200 OK 状态。如果失败,请重新发出请求。
3.暂时停止与活动机器学习作业和数据馈送关联的任务。(可选)
4.关闭所有节点。
如果您使用systemd运行Elasticsearch:
sudo systemctl stop elasticsearch.service
如果您使用 SysV init 运行Elasticsearch:
sudo -i service elasticsearch stop
如果您作为守护进程运行弹性搜索:
kill $(cat pid)
5.执行任何所需的更改。