开源Elasticsearch提供了一系列RESTful风格的API,您可以通过curl命令使用,也可以在Kibana中使用。本文介绍如何通过curl命令访问阿里云Elasticsearch实例,并完成查看集群信息、创建索引和文档、搜索文档等操作。
背景信息
本文介绍通过curl命令使用API的方法,Kibana方式请参见登录Kibana控制台。
前提条件
创建一个与阿里云Elasticsearch在同一专有网络VPC(Virtual Private Cloud)下的云服务器ECS实例,且为Linux操作系统。具体操作,请参见使用向导创建实例。
重要 您也可以使用已创建的ECS实例,但需确保与Elasticsearch实例在相同VPC下。
访问实例
- 连接ECS实例。具体操作,请参见步骤三:连接ECS实例。说明 本文档以普通用户权限为例。
- 使用如下命令,访问阿里云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
预期结果如下:
查看集群信息
- 查看集群健康状况
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"} } } }'
预期结果如下:以上示例设置product_info索引的类型为_doc(7.0及以上版本必须为_doc),包含了productName、annual_rate和describe字段,并定义了各字段所使用的分词器。
- 创建文档并插入数据
- 创建单个文档
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" }'
预期结果如下:以上示例在类型为_doc的product_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"}'
预期结果如下:以上示例在类型为_doc的product_info索引中,创建了一个名称为1和2的文档,并分别向文档中插入了一条数据。
- 创建单个文档
搜索文档
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官方文档。