在Windows上使用Windows .zip归档文件可以安装Elasticsearch。这个包含一个elasticsearch-service.bat命令,它将设置Elasticsearch以服务方式运行。
此软件包包含免费和订阅功能。开始使用30天的试用期以尝试所有功能。
:::tips
注意: 在Windows上,Elasticsearch的机器学习功能需要Microsoft通用C运行时库。这已内置于Windows 10、Windows Server 2016和更高版本的Windows中。对于较旧的Windows版本,它可以通过Windows Update或从单独的下载安装。如果无法安装Microsoft通用C运行时库,您仍然可以使用Elasticsearch的其余部分,只需禁用机器学习功能。
:::
最新的稳定版本的Elasticsearch可以在下载Elasticsearch页面上找到。其他版本可以在以前的发布页面上找到。
:::tips
Elasticsearch包含来自JDK维护者的OpenJDK的捆绑版本(GPLv2+CE)。要使用自己的Java版本,请参阅JVM版本要求。
:::
下载并安装.zip包编辑
从以下链接下载Elasticsearch 8.11.1的.zip归档文件:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.1-windows-x86_64.zip
使用您喜欢的解压工具解压它。这将创建一个名为elasticsearch-8.11.1的文件夹,我们将称之为%ES_HOME%。在终端窗口中,切换到%ES_HOME%目录,例如:
cd C:\elasticsearch-8.11.1
启用系统索引的自动创建编辑
一些商业功能在Elasticsearch中自动创建索引。默认情况下,Elasticsearch配置为允许自动索引创建,无需额外步骤。但是,如果您在Elasticsearch中禁用了自动索引创建,您必须在elasticsearch.yml中配置action.auto_create_index,以允许商业功能创建以下索引:
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
:::tips
如果您使用Logstash或Beats,那么您很可能需要在action.auto_create_index设置中添加额外的索引名称,确切的值将取决于您的本地配置。如果您不确定您环境的正确值,您可以考虑将该值设置为*,这将允许自动创建所有索引。
:::
从命令行启动Elasticsearch
运行以下命令以从命令行启动Elasticsearch:
.\bin\elasticsearch.bat
第一次启动Elasticsearch时,默认情况下会启用并配置安全功能。以下安全配置将自动进行:
- 启用身份验证和授权,并为内置的elastic超级用户生成密码。
- 生成用于传输和HTTP层的TLS的证书和密钥,并使用这些证书和密钥启用和配置TLS。
- 为Kibana生成一个有效期为30分钟的注册令牌。
- elastic用户的密码和Kibana的注册令牌将输出到您的终端。
我们建议将elastic密码存储为shell环境变量。示例:
$ELASTIC_PASSWORD="your_password"
如果您对Elasticsearch密钥库进行了密码保护,将提示您输入密钥库的密码。有关更多详细信息,请参阅安全设置。
默认情况下,Elasticsearch将其日志打印到控制台(STDOUT)和logs目录中的.log文件中。在Elasticsearch启动时,它会记录一些信息,但在完成初始化后,它将继续在前台运行,并且直到发生值得记录的事件之前,将不再记录任何内容。在Elasticsearch运行时,您可以通过其默认端口9200的HTTP接口与其进行交互。
要停止Elasticsearch,请按Ctrl-C。
加入现有集群的节点
当Elasticsearch首次启动时,安全自动配置过程将HTTP层绑定到0.0.0.0,但仅将传输层绑定到localhost。这是一种预期行为,确保您可以在默认情况下启用安全性的单节点集群而无需任何其他配置。
在注册新节点之前,通常需要在生产集群中执行附加操作,比如绑定到除localhost之外的地址或满足引导检查的条件。在此期间,自动生成的注册令牌可能会过期,这就是为什么注册令牌不会自动生成的原因。
另外,只有在没有额外配置的情况下,同一主机上的节点才能加入集群。如果希望来自另一主机的节点加入集群,则需要将transport.host设置为一个受支持的值(例如取消注释建议值0.0.0.0),或者绑定到其他主机可以访问的接口上的IP地址。有关更多信息,请参阅传输设置。
要将新节点加入集群,请在集群中的任何现有节点上使用elasticsearch-create-enrollment-token工具创建一个注册令牌。然后,您可以使用--enrollment-token参数启动新节点,使其加入现有集群。
在Elasticsearch运行的终端窗口之外,导航到您安装Elasticsearch的目录,并运行elasticsearch-create-enrollment-token工具以为新节点生成注册令牌。
bin\elasticsearch-create-enrollment-token -s node
复制注册令牌,您将使用它来为新节点注册到您的Elasticsearch集群。
从新节点的安装目录中,启动Elasticsearch,并使用--enrollment-token参数传递注册令牌。
bin\elasticsearch --enrollment-token <enrollment-token>
Elasticsearch会自动生成证书和密钥,存储在以下目录:
config\certs
为任何要注册的新节点重复上述步骤。
在命令行上配置Elasticsearch
Elasticsearch默认从%ES_HOME%\config\elasticsearch.yml文件加载其配置。此配置文件的格式在配置Elasticsearch中有详细说明。
可以在命令行上使用-E语法指定在配置文件中可以指定的任何设置,如下所示:
.\bin\elasticsearch.bat -Ecluster.name=my_cluster -Enode.name=node_1
包含空格的值必须用引号括起来。例如,-Epath.logs="C:\My Logs\logs"。
通常,任何集群范围的设置(如cluster.name)应添加到elasticsearch.yml配置文件中,而任何节点特定的设置,如node.name,可以在命令行上指定。
检查Elasticsearch是否正在运行编辑
您可以通过向localhost的端口9200发送HTTPS请求来测试Elasticsearch节点是否正在运行:
curl --cacert %ES_HOME%\config\certs\http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200
确保在调用中使用https,否则请求将失败。
--cacert
生成的HTTP层http_ca.crt证书的路径。
该调用返回如下响应:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "8.11.1",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_flavor" : "default",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.8.0",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
安装和运行Elasticsearch作为Windows服务
您可以将Elasticsearch安装为在后台运行或在启动时自动启动且无需用户交互的服务。
安装Elasticsearch作为服务。服务的名称和ES_JAVA_HOME的值将在安装过程中提供:
C:\elasticsearch-8.11.1\bin>elasticsearch-service.bat install
安装服务后,Elasticsearch服务的名称和ES_JAVA_HOME(64位)的值将在命令提示符下显示:
Installing service : "elasticsearch-service-x64"
Using ES_JAVA_HOME (64-bit): "C:\jvm\jdk1.8"
The service 'elasticsearch-service-x64' has been installed.
启动Elasticsearch作为服务。当Elasticsearch启动时,默认启用身份验证:
C:\elasticsearch-8.11.1\bin>bin\elasticsearch-service.bat start
在将Elasticsearch作为服务启动时,未启用或配置TLS。
使用elasticsearch-reset-password
工具生成elastic用户的密码。密码将输出到命令行。
C:\elasticsearch-8.11.1\bin>\bin\elasticsearch-reset-password -u elastic
虽然JRE可以用于Elasticsearch服务,但由于其使用客户端VM(而不是为长时间运行的应用程序提供更好性能的服务器JVM),不建议使用它,并将发出警告。
系统环境变量ES_JAVA_HOME
应设置为您希望服务使用的JDK安装的路径。如果升级JDK,则无需重新安装服务,但必须将系统环境变量ES_JAVA_HOME
的值设置为新JDK安装的路径。但是,不支持跨JVM类型的升级(例如,JRE与SE之间的升级),并且确实需要重新安装服务。
管理Windows上的Elasticsearch服务
在bin\
文件夹中运行elasticsearch-service.bat
脚本,以从命令行安装、移除、管理或配置服务,并可能启动和停止服务。
C:\elasticsearch-8.11.1\bin>elasticsearch-service.bat
用法: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
此脚本需要一个参数(要执行的命令),后跟一个可选的参数,指定服务的ID(在安装多个Elasticsearch服务时很有用)。
可用的命令有:
install | Install Elasticsearch as a service |
---|---|
remove | Remove the installed Elasticsearch service (and stop the service if started) |
start | Start the Elasticsearch service (if installed) |
stop | Stop the Elasticsearch service (if started) |
manager | Start a GUI for managing the installed service |
自定义服务设置
在安装之前,可以通过设置以下环境变量来配置Elasticsearch服务(可以使用命令行中的set
命令,也可以通过System Properties→Environment Variables GUI)。
SERVICE_ID | A unique identifier for the service. Useful if installing multiple instances on the same machine. Defaults to elasticsearch-service-x64. |
---|---|
SERVICE_USERNAME | The user to run as, defaults to the local system account. |
SERVICE_PASSWORD | The password for the user specified in %SERVICE_USERNAME%. |
SERVICE_DISPLAY_NAME | The name of the service. Defaults to {es} <version> %SERVICE_ID%. |
SERVICE_DESCRIPTION | The description of the service. Defaults to {es} <version> Windows Service - https://elastic.co. |
ES_JAVA_HOME | The installation directory of the desired JVM to run the service under. |
SERVICE_LOG_DIR | Service log directory, defaults to %ES_HOME%\logs. Note that this does not control the path for the Elasticsearch logs; the path for these is set via the setting path.logs in the elasticsearch.yml configuration file, or on the command line. |
ES_PATH_CONF | Configuration file directory (which needs to include elasticsearch.yml, jvm.options, and log4j2.properties files), defaults to %ES_HOME%\config. |
ES_JAVA_OPTS | Any additional JVM system properties you may want to apply. |
ES_START_TYPE | Startup mode for the service. Can be either auto or manual (default). |
ES_STOP_TIMEOUT | The timeout in seconds that procrun waits for service to exit gracefully. Defaults to 0. |
:::tips
在其核心,elasticsearch-service.bat
依赖于 Apache Commons Daemon 项目来安装服务。在服务安装之前设置的环境变量会被复制,并在服务生命周期中使用。这意味着在安装后对它们进行的任何更改除非重新安装服务,否则将不会生效。
默认情况下,Elasticsearch会根据节点的角色和总内存自动调整JVM堆的大小。我们建议在大多数生产环境中使用这个默认大小。如果需要,可以通过手动设置堆大小来覆盖默认大小。
在将Elasticsearch首次安装为Windows服务或从命令行运行时,可以手动设置JVM堆大小。要为已安装的服务调整堆大小,请使用服务管理器:bin\elasticsearch-service.bat manager
。
服务会在运行时自动配置一个专用临时目录供Elasticsearch使用。这个私有临时目录被配置为安装用户的私有临时目录的子目录。如果服务将在不同的用户下运行,可以通过在执行服务安装之前设置环境变量ES_TMPDIR
为首选位置,来配置服务应该使用的临时目录的位置。
:::
使用管理器 GUI
在安装后,也可以使用管理器 GUI (elasticsearch-service-mgr.exe
) 对服务进行配置,该 GUI 提供了对已安装服务的洞察,包括其状态、启动类型、JVM、启动和停止设置等。通过命令行调用 elasticsearch-service.bat manager
来打开管理器窗口。
大多数通过管理器 GUI 进行的更改(如 JVM 设置)都需要重新启动服务才能生效。
连接客户端到 Elasticsearch
当您第一次启动 Elasticsearch 时,TLS 自动配置为 HTTP 层。CA 证书会生成并存储在磁盘上的路径为:
%ES_HOME%\config\certs\http_ca.crt
此证书的十六进制编码 SHA-256 指纹也会输出到终端。连接到 Elasticsearch 的任何客户端,如 Elasticsearch 客户端、Beats、独立的 Elastic Agents 和 Logstash 等,都必须验证其信任 Elasticsearch 用于 HTTPS 的证书。Fleet Server 和 Fleet 管理的 Elastic Agents 会自动配置以信任 CA 证书。其他客户端可以通过使用 CA 证书的指纹或 CA 证书本身来建立信任。
如果自动配置过程已经完成,您仍然可以获取安全证书的指纹。您还可以将 CA 证书复制到您的机器并配置客户端使用它。
使用 CA 指纹编辑
复制在 Elasticsearch 启动时终端输出的指纹值,并配置您的客户端使用此指纹在连接到 Elasticsearch 时建立信任。
如果自动配置过程已经完成,您仍然可以通过运行以下命令获取安全证书的指纹。路径是 HTTP 层的自动生成的 CA 证书。
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
该命令返回包含指纹的安全证书。颁发者应该是 Elasticsearch 安全自动配置 HTTP CA。
issuer= /CN=Elasticsearch security auto-configuration HTTP CA
SHA256 Fingerprint=<fingerprint>
使用 CA 证书编辑
如果您的库不支持验证指纹的方法,每个 Elasticsearch 节点上都会创建自动生成的 CA 证书,路径如下:
%ES_HOME%\config\certs\http_ca.crt
将 http_ca.crt
文件复制到您的机器,并配置您的客户端使用此证书在连接到 Elasticsearch 时建立信任。
.zip 存档的目录布局
.zip 包是完全自包含的。所有文件和目录默认都包含在 %ES_HOME%
中,这是解压缩存档时创建的目录。
这非常方便,因为您无需创建任何目录就可以开始使用 Elasticsearch,并且卸载 Elasticsearch 就像删除 %ES_HOME%
目录一样简单。但是,建议更改配置目录、数据目录和日志目录的默认位置,以便以后不会删除重要数据。
home | Elasticsearch home directory or %ES_HOME% | Directory created by unpacking the archive | |
---|---|---|---|
bin | Binary scripts including elasticsearch to start a node and elasticsearch-plugin to install plugins | %ES_HOME%\bin | |
conf | Configuration files including elasticsearch.yml | %ES_HOME%\config | ES_PATH_CONF |
conf | Generated TLS keys and certificates for the transport and HTTP layer. | %ES_HOME%\config\certs | |
data | The location of the data files of each index / shard allocated on the node. | %ES_HOME%\data | path.data |
logs | Log files location. | %ES_HOME%\logs | path.logs |
plugins | Plugin files location. Each plugin will be contained in a subdirectory. | %ES_HOME%\plugins | |
repo | Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here. | Not configured | path.repo |
网友评论