wangjie_fourth

may the force be with you

0%

在windows中安装Elasticsearch

使用.zip在Windows系统安装Elasticsearch

Elasticsearch可以用的Windows的.zip归档文件来安装。归档文件中的elasticsearch-service.bat会将Elasticsearch作为一个服务运行起来。

文件即包含免费、订阅的功能。可以通过30天免费使用来尝试所有的功能。

Windows上的Elasticsearch的机器学习特性需要Microsoft Universal C Runtime library。这个包内嵌于Windows10、Windows Server 2016和一些最近版本的Windows系统。对于一些老版本的Windows系统,可以通过升级Windows系统或者单独下载来安装这个包。如果你不想使用机器学习这个功能,就可以不安装这个包,并且还可以使用Elasticsearch的其他功能。

可以通过这个Elasticsearch下载页面来获取最新稳定版本的Elasticsearch。Elasticsearch的其他版本可以通过历史发布页面获取。

Elasticsearch包含JDK维护团队的绑定版本的OpenJDK。如果想使用指定版本的Java,请参考JVM版本要求

下载并安装.zip文件包

可以通过这个链接,下载Elasticsearch8.6.0的安装包。

1
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.0-windows-x86_64.zip

用你喜欢解压工具来解压它。然后会创建一个叫elasticsearch-8.6.0文件夹,我们会将这个文件夹认为是ES_HOME。在windows的命令行下,进入ES_HOME文件夹下,比如:

1
cd C:\elasticsearch-8.6.0

允许自动创建系统索引

一些商业化版本的Elasticsearch会自动创建索引。默认情况下,Elasticsearch是通过配置来允许自动创建索引,不需要其他步骤。然而,如果你禁用了自动创建索引,你就必须在elasticsearch.yml中配置action.auto_create_index来允许商业特性来创建下列索引:

1
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

注意:如果你使用Logstash或者Beats,那你可能还需要在action.auto_create_index配置中添加一些额外的索引名称,具体的索引名称是取决于你本地的配置。如果你不确定的话,你可以尝试配置成×来允许所有索引的自动创建。

通过命令行来运行Elasticsearch

在命令行中,运行下列命令来启动Elasticsearch:

1
.\bin\elasticsearch.bat

当Elasticsearch第一次运行时,安全特性将会被默认启用和配置。下列安全配置将会自动发生:

  • 开启认证授权,密码是由内置的超级管理员的elastic生成;
  • 为传输层和HTTP层生成TLS的证书和密钥,并使用这些密钥和证书启用和配置TLS;
  • 为Kibana生成一个注册令牌,有效期为30分钟;

elastic的密码和Kibana的注册令盘会被输出到你的命令行。比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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密码库使用了密码保护,你将会被提示输出密码库的密码。通过安全配置来获取更多信息。

默认情况下,Elasticsearch将日志输出的控制台和日志文件夹<clustername>.log文件。Elasticsearch会在启动的时候,记录一些信息;但在它完成初始化之后,它将继续在前台运行,直到发生值得记录的事情之前,它不会继续记录任何内容。在Elasticsearch运行的时候,你可以通过HTTP来与它进行交互,默认端口是9200。

Ctrl+C来停止Elasticsearch。

在现有的集群注册节点

当Elasticsearch第一次启动的时候,安全将自动配置将HTTP层绑定到0.0.0.0,但只将传输层绑定到本机。这种默认行为将保证在不需要任何配置的情况下,你也可以在单节点集群里使用安全功能。

在生产环境下, 注册新节点之前,还需要做一些额外操作。比如:绑定到特定的地址而不是localhost、完成一些初始化检查。在这段时间内,自动生产的准入令牌会过期,这就是为什么准入令牌不能自动生成。

此外,只有在同一个主机的节点才可以在不需要任何配置的情况下,加入集群。如果你想把其他主机上的结点加入到你的集群,你需要设置transport.host为支持的值(比如上面提高的0.0.0.0),或者是集群可以访问的其他ip地址。额外信息请参考交换设置

为了把新结点加入到你的集群,你需要在集群的任意一个节点通过elasticsearch-create-enrollment-token工具来获取准入令牌。然后你就可以使用--enrollment-token将新节点加入到集群里。

1、在一个新的终端下,进入到你安装Elasticsearch的目录下,然后运行elasticsearch-create-enrollment-token工具来生成一个准入令牌:

1
bin\elasticsearch-create-enrollment-token -s node

复制准入令牌,这会在把新节点加入到Elasticsearch集群中用到。
2、在新节点的安装目录下,通过--enrollment-token参数传入准入令牌,来启动Elasticsearch:

1
bin\elasticsearch --enrollment-token <enrollment-token>

Elasticsearch将会在下列文件夹下自动生成证书和密钥:

1
config\certs

3、重复上述步骤,可以把任何新节点加入到集群

在命令行下配置Elasticsearch

默认情况下,Elasticsearch从%ES_HOME%\config\elasticsearch.yml文件加载配置信息。配置文件的格式信息解释在配置Elasticsearch

配置文件的任何配置都可以通过命令行来指定,像下面一样使用-E来配置:

1
.\bin\elasticsearch.bat -Ecluster.name=my_cluster -Enode.name=node_1

note:包含空格的配置值必须要使用双引号包起来。比如:-Epath.logs="C:\My Logs\logs"
tips:通常情况下,任何集群级别的配置(比如cluster.name)都应该在elasticsearch.yml上配置,而任何节点级别的配置(比如node.name)可以在命令行上指定

检查Elasticsearch是否在运行

你可以在你的Elasticsearch节点上通过发送HTTPS请求到本地的9200端口,来测试Elasticsearch是否在运行:

1
curl --cacert %ES_HOME%\config\certs\http_ca.crt -u elastic https://localhost:9200 

1、确保在你的调用中使用https,否则请求会失败。
--cacert:HTTP层面生成的http_ca.crt文件的路径。

输入在安装时生成的elastic用户的密码,返回的响应应该类似如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "8.6.0",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_flavor" : "default",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.4.2",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}

在Windows下,通过服务安装、运行Elasticsearch

你可以把Elasticsearch安装做成一个服务,这样你可以在后台运行,并且在重启后不需要用户交互的情况下,就会重启。
1、安装Elasticsearch服务。服务的名称和ES_JAVA_HOME可以在安装时获取:

1
2
3
4
C:\elasticsearch-8.6.0\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.

2、启动Elasticsearch服务。当Elasticsearch服务启动时,默认情况下,安全校验会启用:

1
C:\elasticsearch-8.6.0\bin>bin\elasticsearch-service.bat start

note:当你把Elasticsearch启用做成服务时,TLS不会被启用。

3、使用elasticsearch-reset-password来为elastic用户生成密码。密码将会被输出到下面命令行:

1
C:\elasticsearch-8.6.0\bin>\bin\elasticsearch-reset-password -u elastic

note: 尽量Elasticsearch服务也可以使用JRE,但是因为这是客户端的VM(而不是那些为了长期运行服务端、可以提供更好性能的JVM),因此并不建议使用JRE。
note:系统环境变量ES_JAVA_HOME应该被设置成服务想使用的JDK安装位置。如果你升级JDK,还不想重新安装Elasticsearch服务,那你就必须将系统环境变量ES_JAVA_HOME设置成新JDK安装的位置。然而,跨JVM类型的安装是不支持的,并且还需要在JDK安装后,重新安装Elasticsearch服务。

在Windows上,像服务一样管理Elasticsearch

bin文件夹下,在命令行下运行elasticsearch-service.bat脚本来安装、删除、管理、配置、开启、关闭服务。

1
2
3
C:\elasticsearch-8.6.0\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界面

https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html