本文介绍如何使用curl命令访问阿里云Elasticsearch(简称ES)实例,并完成查看集群信息、创建索引和文档、搜索文档等操作。

前提条件

创建一个与阿里云ES在同一专有网络VPC(Virtual Private Cloud)下的云服务器ECS实例,详情请参见使用向导创建实例
注意 您也可以使用已创建的ECS实例,但需确保与ES实例在相同VPC下。如果ECS处于经典网络下,期望访问VPC中的ES,请先参考通过经典网络访问ES常见问题进行相关配置。

背景信息

官方ES提供了一系列的Restful风格的API,您可以通过curl命令使用,也可以在Kibana中使用。本文介绍通过curl命令使用API的方法,Kibana方式请参见快速入门章节
注意 请将本文示例代码中的es_password替换为您阿里云ES实例的密码。

使用curl命令访问阿里云ES实例

  1. 连接ECS实例。
    详情请参见步骤三:连接ECS实例
  2. 使用如下curl命令访问阿里云ES实例。
    说明 如果系统提示curl command not found,请先使用yum install curl,在ECS中安装curl。
    curl -u <username>:<password> http://<host>:<port>
    变量名 说明
    <username> 阿里云ES实例的访问账号。建议通过非elastic账号访问。
    注意
    • 支持通过elastic账号访问,但因为在修改elastic账号的密码后需要一些时间来生效,在密码生效期间会影响服务访问,因此不建议通过elastic来访问。
    • 如果您创建的阿里云ES实例的版本中包含with_X-Pack信息,则访问该阿里云ES实例时,必须指定用户名和密码。
    <password> 阿里云ES实例的访问密码。为您在创建阿里云ES实例时设置的密码,或初始化Kibana时指定的密码。
    <host> 阿里云ES实例的内网地址。可在实例的基本信息页面获取。
    <port> 阿里云ES实例的端口。一般为9200,可在实例的基本信息页面获取。
    访问示例如下。
    curl -u elastic:es_password http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200
    访问成功后,返回结果如下。使用ECS访问ES结果示例

使用curl命令查看集群信息

  • 查看集群健康状况
    curl -u elastic:es_password -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/_cat/health?v'

    执行成功后,返回如下结果。

    查看集群健康状况
  • 查看集群中包含的索引信息
    curl -u elastic:es_password -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/_cat/indices?v'

    执行成功后,返回如下结果。

    查看集群索引信息

使用curl命令创建索引和文档

  • 创建索引
    curl -u elastic:es_password -XPUT 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info'

    以上示例创建了一个名称为product_info的索引。

    执行成功后,返回如下结果。创建索引
  • 为索引设置mapping
    curl -u elastic:es_password -XPUT 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info/_doc/_mapping' -H 'Content-Type: application/json' -d '
    {
     "_doc":{
       "properties": {
            "productName": {"type": "text","analyzer": "ik_smart"},
            "annual_rate":{"type":"keyword"},
            "describe": {"type": "text","analyzer": "ik_smart"}
          }
      }
    }'

    执行成功后,返回如下结果。

    为索引设置mapping

    以上示例设置product_info索引的类型为_doc,包含了productNameannual_ratedescribe字段,并定义了各字段的类型所使用的分词器。

  • 创建文档并插入数据
    curl -u elastic:es_password -XPOST 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info/_doc/1?pretty' -H 'Content-Type: application/json' -d '
    {
    "productName":"testpro",
    "annual_rate":"3.22%",
    "describe":"testpro"
    }'
    执行成功后,返回结果如下。创建文档并插入数据

    以上示例在类型为_docproduct_info索引中,创建了一个名称为1的文档,并向文档中插入了一条数据。

使用curl命令搜索文档

curl -u elastic:es_password -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info/_doc/1?pretty'
执行成功后,返回结果如下。搜索文档

以上示例搜索名称为1的文档。

使用curl命令删除索引

curl -u elastic:es_password -XDELETE 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info'
执行成功后,返回结果如下。删除索引

以上示例删除了名称为product_info的索引。

说明 更多命令请参见ES官方文档