开源Elasticsearch提供了一系列RESTful风格的API,您可以通过curl命令使用,也可以在Kibana中使用。本文介绍如何通过curl命令访问阿里云Elasticsearch实例,并完成查看集群信息、创建索引和文档、搜索文档等操作。

背景信息

本文介绍通过curl命令使用API的方法,Kibana方式请参见登录Kibana控制台

前提条件

创建一个与阿里云Elasticsearch在同一专有网络VPC(Virtual Private Cloud)下的云服务器ECS实例,且为Linux操作系统。具体操作,请参见使用向导创建实例
重要 您也可以使用已创建的ECS实例,但需确保与Elasticsearch实例在相同VPC下。

访问实例

  1. 连接ECS实例。
    具体操作,请参见步骤三:连接ECS实例
    说明 本文档以普通用户权限为例。
  2. 使用如下命令,访问阿里云Elasticsearch实例。
    说明 如果系统提示curl command not found,请先使用sudo yum install curl命令,在ECS中安装curl。
    curl -u <user>:<password> http://<host>:<port>
    变量名说明
    <user>阿里云Elasticsearch实例的访问用户名。建议通过非elastic账号访问。
    重要
    • 支持通过elastic账号访问,但因为在修改elastic账号的密码后需要一些时间来生效,在密码生效期间会影响服务访问,因此不建议通过elastic账号来访问。建议在Kibana控制台中创建一个符合预期的Role角色用户进行访问,具体操作请参见通过Elasticsearch X-Pack角色管理实现用户权限管控
    • 如果您创建的阿里云Elasticsearch实例的版本中包含with_X-Pack信息,则访问该实例时,必须指定用户名和密码。
    <password>对应账号的密码。elastic账号的密码在创建实例时设定,如果忘记可重置。重置密码的注意事项和具体操作,请参见重置实例访问密码
    <host>实例的内网地址。可在实例的基本信息页面获取。
    <port>实例的访问端口。一般为9200,可在实例的基本信息页面获取。
    访问示例如下:
    curl -u <user>:<password> http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200
    预期结果如下:使用ECS访问ES结果示例

查看集群信息

  • 查看集群健康状况
    curl -u <user>:<password> -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/_cat/health?v'
    预期结果如下:查看集群健康状况
  • 查看集群中包含的索引信息
    curl -u <user>:<password> -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/_cat/indices?v'
    预期结果如下:查看集群索引信息

创建索引和文档

  • 创建索引
    curl -u <user>:<password> -XPUT 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info'

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

    预期结果如下:创建索引
  • 为索引设置mapping
    curl -u <user>:<password> -XPUT 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info/_doc/_mapping?include_type_name=true' -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(7.0及以上版本必须为_doc),包含了productNameannual_ratedescribe字段,并定义了各字段所使用的分词器。

  • 创建文档并插入数据
    • 创建单个文档
      curl -u <user>:<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 -u <user>:<password> -XPOST http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/_bulk -H 'Content-Type: application/json' -d'
      { "index" : { "_index": "product_info", "_type" : "_doc", "_id" : "1" } }
      {"productName":"testpro","annual_rate":"3.22%","describe":"testpro"}
      { "index" : { "_index": "product_info", "_type" : "_doc", "_id" : "2" } }
      {"productName":"testpro1","annual_rate":"3.26%","describe":"testpro"}'
      预期结果如下:创建多个文档

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

搜索文档

curl -u <user>:<password> -XGET 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info/_doc/1?pretty'
预期结果如下:搜索文档

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

删除索引

curl -u <user>:<password> -XDELETE 'http://es-cn-vxxxxx****.elasticsearch.aliyuncs.com:9200/product_info'
预期结果如下:删除索引

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

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

常见问题

Windows系统终端连接Elasticsearch时,如何安装curl命令,并通过curl命令访问集群?