在 Windows 上使用 .zip 安装 Elasticsearch
在 Windows 系统安装 Elasticsearch,可以使用 Windows .zip 归档文件,带着一个将 Elasticsearch 安装为一个服务的 elasticsearch-service.bat 命令。
这个安装包同时包含了免费和需订阅的特性。 开启30天试用 可以尝试所有的特性。
在Windows系统上,ES 的机器学习特性需要微软的通用C语言运行时库。这个库内建在 Windows 10, Windows Server 2016 和更多最近的 Windows 版本。老版本的 Windows 可以通过系统升级来安装,或通过一个 独立下载安装。如果你不能安装微软的通用C运行时库,你仍然可以使用禁用掉机器学习特性的其它特性。 ES 的最新稳定版本在 下载 Elasticsearch 页。其它版本在 过去的发行版 页。 Es 包含了一个绑定的来自于JDK维护者的 OpenJDK 版本(GPLv2+CE)。要使用你自己的 Java 版本,查看 JVM 版本要求 。
下载并安装 .zip 包
下载 Elasticsearch 8.4.3 的 .zip 归档文件,从这里:
artifacts.elastic.co/downloads/e…
使用你最喜欢的 zip 解压工具解压它。这将创建一个 elasticsearch-8.4.3 的文件夹,我们可以将它关联至 %ES_HOME% 。在 Windows 终端里,cd 到 %ES_HOME% 目录,例如:
cd C:\elasticsearch-8.4.3
开启系统索引的自动创建
一些商业的特性在 ES 里自动创建索引。默认情况下,ES 被设置为允许自动进行索引的创建,不需要额外的步骤。然而,如果你已经禁用了在 ES 里自动创建索引,你必须在 elasticsearch.yml 里配置 action.auto_create_index 以允许商业特性创建下面的索引:
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
如果你正使用 Logstash 或者 Beats 那么你很有可能需要在你的
action.auto_create_index设置里添加额外的索引名称,实际的值依赖于你的本地配置。如果你不能确定你的环境里的正确的值,你可以考虑设置为 * 以允许自动创建所有的索引.
从命令行运行 Elasticsearch
从命令行运行下面的命令开始 ES
.\bin\elasticsearch.bat
当首次开始Elasticsearch的时候,安全特性默认被打开和配置。下面的安全配置会自动发生:
- 认证和授权被开启,并且为内建的超级用户
elastic产生一个密码。 - 为传输层和 HTTP 层的 TLS 产生证书和密钥,并且 TLS 被开启,被配置为使用这些证书和密钥。
- 产生一个用于 Kibana 注册的 token,有效期30分钟。
elastic 用户的密码和用于 Kibana 注册的 token 会输出到终端。比如:
The generated password for the elastic built-in superuser is:
<password>
The enrollment token for Kibana instances, valid for the next 30 minutes:
<enrollment-token>
The hex-encoded SHA-256 fingerprint of the generated HTTPS CA DER-encoded certificate:
<fingerprint>
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'bin\elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with
'bin\elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'bin\elasticsearch-create-enrollment-token -s node'.
如果你有保护密码的 Elasticsearch 密钥库,你会被提示输入密钥库的密码。查看 安全设置 获取更多细节。
默认情况下 ES 打印它的日志到控制台(STDOUT)和 logs directory 目录里的 <cluster name>.log 文件。ES 在它启动的时候会记录一些信息日志,但当它完成初始化后它将继续在前台运行,并且不会再记录任何东西直到有什么值得记录的事情发生。当 ES 在运行的时候你可以通过它的默认在 9200 端口的 HTTP 接口和它交互。
要停止 ES ,按下 Ctrl-C。
在一个存在的集群里登记节点
当 ES 首次启动时,安全自动配置处理程序将 HTTP 层绑定至 0.0.0.0,但是传输层只绑定至 localhost。这种预期行为能确保你不需要额外的配置即能开始一个默认开启了安全的单节点集群。
登记一个新的节点之前,额外的动作比如绑定一个 localhost 之外的地址或者引导满足性检查,在集群生产环境是必要的。在那期间,一个自动生成的登记 token 可能会过期,这就是为什么登记 token 不自动生成的原因。
另外,只有相同主机的节点可以不用额外的配置即可加入到集群。如果你想要不同主机的节点加入你的集群,你需要设置 transport.host 为一个 支持的值 (比如不带注释的建议值 0.0.0.0 ),或者一个绑定到别的主机不能到达的接口的 IP 地址。参考 transport 设置 获取更多信息。
要在你的集群里登记一个新节点,在你集群的任何一个存在的节点通过工具 elasticsearch-create-enrollment-token 创建一个登记 token。之后你可以通过带上 --enrollment-token 参数开始你的新节点以至于它加入到存在的集群。
-
从 ES 运行的终端之外另开一个终端,切换到 ES 的安装目录,运行
elasticsearch-create-enrollment-token工具为你的新节点产生一个登记 token。bin\elasticsearch-create-enrollment-token -s node
复制这个登记 token,使用它在你的 ES 集群里登记新的节点。
-
从你的新节点的安装目录,开始 ES,并将登记 token 通过
--enrollment-token参数传递给它。bin\elasticsearch --enrollment-token
ES 自动在下面的目录里产生证书和密钥:
config\certs
3. 在你想要登记的任何新的节点重复以上步骤。
通过命令行配置 Elasticsearch
ES 默认从 %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 是否正在运行
你可以通过发送一个 HTTPS 请求到 localhost 的 9200 端口来测试你的Es节点是否正在运行:
curl --cacert %ES_HOME%\config\certs\http_ca.crt -u elastic https://localhost:9200
️确定在你的调用里使用的
https,否则请求将失败。
--cacert
为 HTTP 层产生的http_ca.crt证书的路径。
输入安装时为 elastic 用户产生的密码,将返回一个像这样的响应:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "8.4.3",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_flavor" : "default",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.3.0",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
在 Windows 上将 Elasticsearch 作为一个服务安装并运行
你可以将 ES 安装为一个运行在后台的服务,或者在系统启动时自动开启而不需要用户的手动操作。
- 安装 Elasticsearch 服务。服务的名称和
ES_JAVA_HOME的值可以在安装的时候得到:
C:\elasticsearch-8.4.3\bin>elasticsearch-service.bat install
Installing service : "elasticsearch-service-x64"
Using ES_JAVA_HOME (64-bit): "C:\jvm\jdk1.8"
The service 'elasticsearch-service-x64' has been installed.
- 启动 Elasticsearch 服务。当 ES 启动时,默认情况下认证会被开启:
C:\elasticsearch-8.4.3\bin>bin\elasticsearch-service.bat start
🏳️ 当你启动 Elasticsearch 服务的时候,TLS 不会被启用和配置。
- 使用
elasticsearch-reset-password工具为elastic用户创建一个密码。密码会输出到命令行。
C:\elasticsearch-8.4.3\bin>\bin\elasticsearch-reset-password -u elastic
🏳️ 当 JRE 可以被用于 Elasticsearch 服务时,由于它使用了一个客户端 VM(相比较下,一个服务器JVM可以为长时间运行的应用提供更好的性能),不推荐使用它(JRE),并且会发出一个警告。
🏳️ 系统变量
ES_JAVA_HOME应该被设置为你想要服务使用的 JDK 的安装路径。如果你升级了JDK,你不需要重新安装服务,但是你必须设置系统变量ES_JAVA_HOME的值为新安装的 JDK 的路径。然而,跨JVM类型的升级(比如 JRE vs SE)不被支持,此时你需要重新安装服务。
在Windows上管理 Elasticsearch 服务
在 bin 目录运行 elasticsearch-service.bat 脚本以安装,移除,管理或者配置服务,潜在的通过命令行来启动或停止服务。
C:\elasticsearch-8.4.3\bin>elasticsearch-service.bat
Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
此脚本需要一个参数(执行这个命令),然后跟着一个可选的参数来指明服务id(当安装了多个Elasticsearch服务时这个有用)。
这个命令(译者注:脚本跟随的第一个参数)包含这些:
install 安装 Elasticsearch 服务
remove 移除安装的 Elasticsearch 服务(如果已启动就停止它)
start 启动一个 Elasticsearch 服务(如果已安装)
stop 停止 Elasticsearch 服务(如果已启动)
manager 启动一个 GUI 来管理已安装的服务
自定义服务设置
Elasticsearch 服务可以通过设置下面的系统变量在安装之前进行配置(系统变量设置或者通过命令行使用 set command,或者通过 系统属性->环境变量 GUI)。
SERVICE_ID 服务的唯一身份。当在同一台机器安装多个实例时有用。默认是 elasticsearch-service-x64。
SERVICE_USERNAME 运行服务的用户,默认是系统管理员账户。
SERVICE_PASSWORD 通过 %SERVICE_USERNAME% 指定的用户的密码。
SERVICE_DISPLAY_NAME 服务的名称。默认是 {es} <version> %SERVICE_ID%。
SERVICE_DESCRIPTION 服务的描述。默认是 {es} <version> Windows Service - https://elastic.co。
ES_JAVA_HOME 期望服务运行下的 JVM 的安装路径。
SERVICE_LOG_DIR 服务日志目录,默认是 %ES_HOME%\logs。注意这不会控制 Elasticsearch 日志的路径;Elasticsearch 日志的路径在 elasticsearch.yml 文件里通过 path.logs 设置,或者通过命令行。
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 来安装服务。在服务安装之前的环境变量设置会被拷贝,并在服务的生命周期期间使用。这意味着安装之后对他们(环境变量)的改变不会被收集,除非服务被重新安装。
🏳️ 默认情况下, ES 基于一个节点的角色和总的内存来自动确定 JVM 堆的大小。对于大多数的生产环境我们推荐这个默认的大小。如果需要,你可以手动设置堆大小来覆盖这个默认大小。
当在Wiindows上首次安装 Elasticsearch 服务或者从命令行运行 Elasticsearch,你可以手动 设置 JVM 堆大小。要调整一个已安装服务的堆大小,使用服务管理工具:bin\elasticsearch-service.bat管理工具。
🏳️ 当 Elasticsearch 运行时,服务自动配置了一个私有临时目录供他使用。这个私有临时目录被配置为用户运行安装时的私有临时目录的子目录。如果服务运行在一个不同的用户下,在你安装服务之前,你可以通过设置环境变量ES_TMPDIR来配置服务要使用的临时目录的位置到一个首选的位置。
使用管理者图形界面
当服务被安装后,使用管理者图形界面(elasticsearch-service-mgr.exe)来配置服务也是可能的,这将提供对已安装服务的洞察力,包括它的状态,启动模式,JVM,启动和停止设置等。从命令行调用 elasticsearch-service.bat manager 打开管理窗口。
通过管理者图形界面做的大多数的改变(像JVM设置)需要重启服务以生效。
连接客户端到 Elasticsearch
当你首次启动 Elasticsearch 时,为 HTTP 层自动配置了 TLS。这将产生一个CA证书存储在磁盘上:
%ES_HOME%\config\certs\http_ca.crt
证书的十六进制编码的 SHA-256 指纹也会被输出到终端。任何连接到 Elasticsearch 的客户端,比如 Elasticsearch Clients、Beats、独立 Elastic 代理、和 Logstash,必须验证他们信任 Elasticsearch 用于 HTTPS 的证书。服务器机群和机群管理的 Elastic 代理自动设置为信任 CA 证书。其它的客户端可以通过使用 CA 证书的指纹或者 CA 证书本身来建立信任。
如果自动配置程序已经完成了,你仍然可以获得安全证书的指纹。你也可以拷贝CA证书到你的机器然后配置你的客户端使用它。
使用 CA 指纹
当 ES 启动时拷贝输出到你的终端上的指纹值,配置你的客户端当他连接到 Elasticsearch 的时候使用这个指纹建立信任。
如果自动配置程序已经完成了,你仍然可以通过下面的命令获得安全证书的指纹。路径就是为 HTTP 层自动产生 CA 证书的路径。
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
此命令返回安全证书,包括指纹。 这个 issuer 应该是 Elasticsearch security auto-configuration 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 文件到你的机器,然后配置你的客户端当它连接到 ES 的时候使用这个证书建立信任。
.zip 归档的目录安排
.zip包时完全的自包含的。所有的文件和目录默认被包含进 %ES_HOME% - 当解压归档的时候创建的目录。
这是非常方便的,因为在你开始使用 Elasticsearch 时你不需要创建任何的目录,而且卸载 Elasticsearch 也非常的容易,删除掉 %ES_HOME% 目录就可以了。然而,建议你改变掉 config 目录、data 目录和 logs 目录的默认位置,这样之后你就不会删除掉重要的数据。
| Type | Description | Default Location | Setting |
|---|---|---|---|
| Home | Elasticsearch 主目录或者 %ES_HOME% | 解压归档文件创建的目录 | |
| bin | 二进制脚本包括 elasticsearch 开启一个node, elasticsearch-plugin 安装扩展 | %ES_HOME%\bin | |
| conf | 配置文件包括 elasticsearch.yml | %ES_HOME%\config | ES_PATH_CONF |
| conf | 为传输层和 HTTP 层产生的密钥和证书 | %ES_HOME%\config\certs | |
| data | 在一个节点上分配的每一个索引 / 切片 的数据文件的位置 | %ES_HOME%\data | path.data |
| logs | 日志文件位置 | %ES_HOME%\logs | path.logs |
| plugins | 扩展文件的位置。每一个扩展被包含进一个子目录。 | %ES_HOME%\plugins | |
| repo | 共享文件系统仓库位置。可以持有多个位置。一个文件系统仓库可以放置在这里指定的任何目录的任意的子目录 | 没有配置 | path.repo |