更新时间:2024-11-29 GMT+08:00

使用Elasticsearch客户端

操作场景

本章节指导用户在运维场景中使用Elasticsearch客户端,业务场景请使用Elasticsearch提供的API接口。

Elasticsearch不兼容其他版本客户端,如果重新安装集群或Elasticsearch服务,或者切换Elasticsearch安全模式,请重新下载并安装客户端。

前提条件

  • 已安装客户端。例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
  • 各组件业务用户由MRS集群管理员根据业务需要创建。

    安全模式下,“机机”用户需要下载keytab文件。“人机”用户第一次登录时需修改密码(普通模式不涉及)。

操作步骤

  1. 以客户端安装用户登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 是否安装了多个Elasticsearch服务。

    • 是,使用客户端连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
    • 否,跳过此步骤。

  5. 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。

    kinit 组件业务用户

  6. 执行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客户端样例命令

  1. 以客户端安装用户登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 是否安装了多个Elasticsearch服务。

    • 是,在使用Elasticsearch Rest客户端样例命令连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
    • 否,跳过此步骤。

  5. 如果集群为安全模式,请将组件业务用户的kerberos认证凭证“krb5.conf”和“user.keytab”文件上传至安装客户端节点的“Elasticsearch客户端安装路径/Elasticsearch服务/elasticsearch-example/conf/”目录下。例如:使用了Elasticsearch服务,上传路径为“/opt/client/Elasticsearch/elasticsearch-example/conf/”。“krb5.conf”和“user.keytab”文件需要在Manager页面上通过下载相应用户的认证凭证获取。
  6. 修改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文件路径,具体到文件名,不填将自动生成

  7. 执行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客户端样例命令

  1. 以客户端安装用户登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 是否安装了多个Elasticsearch服务。

    • 是,在使用Elasticsearch Transport客户端样例命令连接某个具体Elasticsearch服务时,请执行命令加载该具体服务的环境变量。例如,执行以下命令加载Elasticsearch-1服务变量:source Elasticsearch-1/component_env
    • 否,跳过此步骤。

  5. 如果集群为安全模式,请将组件业务用户对应的kerberos认证凭“krb5.conf”和“user.keytab”文件上传至“Elasticsearch客户端安装路径/Elasticsearch实例/elasticsearch-example/conf/”目录下。例如:使用了Elasticsearch服务,上传路径为“/opt/client/Elasticsearch/elasticsearch-example/conf/”。“krb5.conf”和“user.keytab”文件需要在Manager页面上通过下载相应用户的认证凭证获取。
  6. 修改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文件路径,具体到文件名,不填将自动生成

  7. 执行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”。