使用Elasticsearch客户端
操作场景
本章节指导用户在运维场景中使用Elasticsearch客户端,业务场景请使用Elasticsearch提供的API接口。
Elasticsearch不兼容其他版本客户端,如果重新安装集群或Elasticsearch服务,或者切换Elasticsearch安全模式,请重新下载并安装客户端。
前提条件
- 已安装客户端。例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
操作步骤
- 以客户端安装用户登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 是否安装了多个Elasticsearch服务。
- 是,使用客户端连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
- 否,跳过此步骤。
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
kinit 组件业务用户
- 执行Elasticsearch shell命令。
cd /opt/client/Elasticsearch/sbin
Elasticsearch客户端命令格式如下:
esClient.sh <option> <command> [command-arg] [-p|u|s [args]]
例如,查看命令帮助:
esClient.sh help
查看使用样例:
esClient.sh example
查看集群健康信息:
esClient.sh cluster health
输入文本,加密后返回:
esClient.sh encrypt
解释索引myindex 1号主分片未分配原因:
esClient.sh cluster allocation_explain -s index=myindex#shard=1#primary=true
- 如果Elasticsearch shell命令的“command-arg”或“args”中含有“*”、“()”、“-”或者空格等特殊字符,请将“command-arg”或“args”用引号引起来。例如:esClient.sh cluster health "in*" -p "level=shards#wait_for_status=yellow#timeout=50s#wait_for_nodes=ge(3)#pretty"
- 如果Elasticsearch shell命令执行过程有误,可查看执行日志“{client_home}/Elasticsearch服务/logs/esClient.log”,{client_home}为Elasticsearch客户端安装目录。例如:使用Elasticsearch服务,日志文件路径为“/opt/client/Elasticsearch/logs/esClient.log”。
- esClient.sh encrypt采用交互式操作接收参数,用户按下回车后提示输入字符串,输入完成,确认后再次按下回车会返回执行结果 {"cipherText":"xxxx"},xxxx为加密后的字符串。esClient.sh encrypt [-n [args]]命令中对于-n参数,需要在参数后加上用户名,按下回车后输入密码并确认,确认后按下回车会返回经过Base64编码后的加密用户信息。该命令用于密码加密等需要密文进行操作的场景。
- master_timeout:Elasticsearch中部分请求需要连接EsMaster,参数“master_timeout”表示Master的超时时间,默认值为“120s”,在Master压力较大场景下还是会有超时的可能, 需要调整该参数,该参数通过-p来指定。
例如: ./esClient.sh cat master -p master_timeout=300s
执行Elasticsearch Rest客户端样例命令
- 以客户端安装用户登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 是否安装了多个Elasticsearch服务。
- 是,在使用Elasticsearch Rest客户端样例命令连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
- 否,跳过此步骤。
- 如果集群为安全模式,请将组件业务用户的kerberos认证凭证“krb5.conf”和“user.keytab”文件上传至安装客户端节点的“Elasticsearch客户端安装路径/Elasticsearch服务/elasticsearch-example/conf/”目录下。例如:使用了Elasticsearch服务,上传路径为“/opt/client/Elasticsearch/elasticsearch-example/conf/”。“krb5.conf”和“user.keytab”文件需要在Manager页面上通过下载相应用户的认证凭证获取。
- 修改es-rest-client-example.properties。例如,使用了Elasticsearch服务,执行以下命令修改es-rest-client-example.properties:
cd /opt/client/Elasticsearch/elasticsearch-example/conf/
vi es-rest-client-example.properties
配置参考表1,配置样例如下:
esServerHost=10.1.1.1:24100,10.2.2.2:24100 principal=esuser isSecureMode=true sslEnabled=true connectTimeout=5000 socketTimeout=60000 connectionRequestTimeout=100000 maxConnPerRoute=100 maxConnTotal=1000 customJaasPath=
表1 es-rest-client-example.properties参数配置说明 参数
默认值
说明
esServerHost
Elasticsearch客户端下载的Elasticsearch集群实例的IP和端口
目标集群Elasticsearch中的实例配置。便于负载均衡,该参数配置了多组IP及端口号,格式为“IP:端口”,多组配置之间以英文逗号分隔。IP为Elasticsearch集群任意数据节点业务平面IP地址,端口号为该节点对外http(s)端口号。
实例配置查看方法如下:登录Manager后选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置”,搜索“INSTANCE_SERVER_PORT_LIST”参数。
说明:不要配置EsMaster的实例列表。
principal
esuser
目标Elasticsearch集群鉴权用户名,isSecureMode为true时配置。格式为用户名,也支持格式用户名@目标集群名,推荐格式为用户名。
isSecureMode
true
目标Elasticsearch集群的安全模式。true表示安全模式,false表示普通模式。
sslEnabled
true
客户端是否开启SSL加密,true为开启加密,false为关闭加密,需要与集群配置一致
connectTimeout
5000
目标集群连接超时时间,单位:毫秒。
socketTimeout
60000
目标集群socket超时时间,单位:毫秒。
connectionRequestTimeout
100000
从连接池中获取可用连接最大超时时间,单位:毫秒。
maxConnPerRoute
100
连接同一个route最大的并发数。
maxConnTotal
1000
连接池中的最大连接数。
customJaasPath
空
用户自定义jaas.conf文件路径,具体到文件名,不填将自动生成
- 执行Elasticsearch Rest客户端样例命令。
cd /opt/client/Elasticsearch/sbin
Elasticsearch Rest客户端样例命令格式如下:
esRestClient.sh [-option [args]]
例如,查看命令帮助:
esRestClient.sh -h
执行Elasticsearch Rest客户端样例:
esRestClient.sh
Elasticsearch Rest客户端样例命令支持参数如表2所示。
表2 Elasticsearch Rest客户端样例命令支持参数 参数
说明
-t
Rest Client类型,支持low、high、为空或不指定。为空或者不指定时为默认值,默认值为high。low:执行low level rest client样例,high:执行high level rest client样例。
-p
配置文件路径,可为空或不指定,为空或不指定时为默认路径。默认路径为“Elasticsearch客户端安装路径/Elasticsearch服务/elasticsearch-example/conf/es-rest-client-example.properties”。若自定义配置文件路径,执行命令的用户需要对该配置文件及该文件所在目录有读写权限,当Elasticsearch为安全模式时,kerberos认证凭证需要放置到该配置文件所在的目录,并配置principal。
-h
打印Elasticsearch Rest客户端样例命令帮助。
Elasticsearch Rest客户端样例命令日志路径为“{client_home}/Elasticsearch服务/elasticsearch-example/logs/esRestExample.log”,{client_home}为Elasticsearch客户端安装目录。例如:使用Elasticsearch服务,日志文件路径为“/opt/client/Elasticsearch/elasticsearch-example/logs/esRestExample.log”。
执行Elasticsearch Transport客户端样例命令
- 以客户端安装用户登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令配置环境变量。
source bigdata_env
- 是否安装了多个Elasticsearch服务。
- 是,在使用Elasticsearch Transport客户端样例命令连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
- 否,跳过此步骤。
- 如果集群为安全模式,请将组件业务用户对应的kerberos认证凭“krb5.conf”和“user.keytab”文件上传至“Elasticsearch客户端安装路径/Elasticsearch实例/elasticsearch-example/conf/”目录下。例如:使用了Elasticsearch服务,上传路径为“/opt/client/Elasticsearch/elasticsearch-example/conf/”。“krb5.conf”和“user.keytab”文件需要在Manager页面上通过下载相应用户的认证凭证获取。
- 修改es-transport-client-example.properties。例如,使用了Elasticsearch服务,执行以下命令修改es-transport-client-example.properties:
cd /opt/client/Elasticsearch/elasticsearch-example/conf/
vi es-transport-client-example.properties
配置参考表3,配置样例如下:
esServerHosts=10.1.1.1:24101,10.2.2.2:24101 clusterName=elasticsearch_cluster principal=esuser isSecureMode=true sslEnabled=true isSniff=true krb5Path={client_home}/Elasticsearch/elasticsearch-example/conf/ keytabPath={client_home}/Elasticsearch/elasticsearch-example/conf/ customJaasPath=
表3 es-transport-client-example.properties参数配置说明 参数
默认值
说明
esServerHost
Elasticsearch客户端下载的FusionInsight Elasticsearch集群实例的IP和端口
目标集群Elasticsearch中的实例配置。便于负载均衡,该参数配置了多组IP及端口号,格式为“IP:端口”,多组配置之间以英文逗号分隔。IP为Elasticsearch集群任意数据节点业务平面IP地址,端口号为该节点对外http(s)端口号。
实例配置查看方法如下:登录Manager后选择“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置”,搜索“INSTANCE_TRANSPORT_TCP_PORT_LIST”参数。
说明:不要配置EsMaster的实例列表。
clusterName
Elasticsearch客户端下载的FusionInsight Elasticsearch集群名称
目标集群Elasticsearch的名称。
principal
esuser
目标Elasticsearch集群鉴权用户名,isSecureMode为true时配置。格式为用户名,也支持格式用户名@目标集群名,推荐格式为用户名。
isSecureMode
true
目标Elasticsearch集群的安全模式。true表示安全模式,false表示普通模式。
sslEnabled
true
是否开启SSL加密,true为开启加密,false为关闭加密,需要与集群配置一致
isSniff
true
是否开始起嗅探。true表示开启,false表示关闭。当开启嗅探时,目标Elasticsearch集群有新的实例加入或者离开时,Transport客户端发送请求时会自动修改实例。
krb5Path
[client_home/Elasticsearch]/elasticsearch-example/conf/
principal用户的krb5.conf文件放置路径。isSecureMode为true时配置。client_home为客户端安装路径,Elasticsearch为Elasticsearch服务,例如客户端安装路径为“/opt/client”,使用了Elasticsearch-1服务,则Elasticsearch客户安装完成后[client_home}/Elasticsearch]自动替换为“/opt/client/Elasticsearch-1”。
keytabPath
[client_home/Elasticsearch]/elasticsearch-example/conf/
principal用户的user.keytab文件放置路径。isSecureMode为true时配置。client_home为客户端安装路径,Elasticsearch为Elasticsearch服务,例如客户端安装路径为“/opt/client”,使用了Elasticsearch-1服务,则Elasticsearch客户安装完成后[client_home/Elasticsearch]自动替换为“/opt/client/Elasticsearch-1”。
customJaasPath
空
用户自定义jaas.conf文件路径,具体到文件名,不填将自动生成
- 执行Elasticsearch Transport客户端样例命令。
cd /opt/client/Elasticsearch/sbin
Elasticsearch Transport客户端样例命令格式如下:
esTransportClient.sh [-option [args]]
例如,查看命令帮助:
esTransportClient.sh -h
执行Elasticsearch Transport客户端样例命令:
esTransportClient.sh
Elasticsearch Transport客户端样例命令支持参数如表4所示。
表4 Elasticsearch Transport客户端样例命令支持参数 参数
说明
-p
配置文件路径,可为空或不指定。为空或不指定时为默认路径。默认路径为“Elasticsearch客户端安装路径/Elasticsearch服务/elasticsearch-example/conf/es-transport-client-example.properties”。
若自定义配置文件路径,执行命令的用户需要对该配置文件及该文件所在目录有读写权限,当Elasticsearch为安全模式时,需要配置principal、krb5Path及keytabPath。
-h
打印Elasticsearch Transport客户端样例命令帮助。
Elasticsearch Transport客户端样例命令日志路径为“{client_home}/Elasticsearch服务/elasticsearch-example/logs/esTransportExample.log”,{client_home}为Elasticsearch客户端安装目录。例如:使用Elasticsearch服务,日志文件路径为“/opt/client/Elasticsearch/elasticsearch-example/logs/esTransportExample.log”。