开源Elasticsearch提供了一系列RESTful风格的API,您可以通过curl命令或在Kibana、Postman中使用这些API。本文介绍如何通过curl命令访问与管理Elasticsearch实例或Serverless应用。
前提条件
已创建Elasticsearch实例或Serverless应用。 具体操作请参见创建阿里云Elasticsearch实例和创建Serverless应用。
已创建操作系统为Linux的ECS实例。具体操作,请参见自定义购买实例。
说明ECS实例需要与Elasticsearch实例在同一专有网络VPC下,或与Serverless应用在同一地域下。
已将阿里云ECS实例的公网IP加入Elasticsearch实例VPC私网访问白名单中。具体操作,请参见配置Elasticsearch实例公网或私网访问白名单。
已将阿里云ECS实例的公网IP加入Serverless应用公网地址访问白名单中。具体操作,请参见配置Serverless应用公网访问白名单。
已连接ECS服务器。具体操作,请参见通过密码或密钥认证登录Linux实例。
说明本文档以普通用户权限为例。
访问Elasticsearch
执行如下命令,访问阿里云Elasticsearch实例。
如果系统提示curl command not found
,请先执行命令sudo yum install curl
,在ECS中安装curl。
curl -u <user>:<password> http://<host>:<port>
变量名 | 说明 |
<user> | Elasticsearch实例的访问用户名,或Serverless应用的用户名称,在应用详情页获取。 重要
|
<password> | 输入Elasticsearch实例或Serverless应用的用户密码。 如果忘记密码,可在Elasticsearch实例详情页的安全配置中重置,或在Serverless应用详情页的基本信息区域重置。更多信息,请参见重置Elasticsearch实例访问密码。 |
<host> | Elasticsearch实例的私网地址,或Serverless应用的公网访问地址。可在Elasticsearch实例或Serverless应用的基本信息区域获取。 |
<port> | Elasticsearch实例或Serverless应用的访问端口,一般为9200。 |
Elasticsearch实例访问命令示例:
curl -u <user>:<password> http://es-cn-x0r3****.elasticsearch.aliyuncs.com:9200
Serverless应用访问命令示例:
curl -u qing****-***:<password> http://qin****-***.public.cn-hangzhou.es-serverless.aliyuncs.com:9200
Elasticsearch实例返回结果如下:
管理Elasticsearch的curl命令
以下介绍通过管理Elasticsearch的curl命令。更多命令,请参见Elasticsearch官方文档。
查看Elasticsearch信息
查看Elasticsearch实例健康状况。
curl -u <user>:<password> -XGET 'http://xxxxx.public.xxxxx.aliyuncs.com:9200/_cat/health?v'
查看Elasticsearch实例或Serverless应用中包含的索引信息。
curl -u <user>:<password> -XGET 'http://http://xxxxx.public.xxxxx.aliyuncs.com:9200/_cat/indices?v'
创建索引和文档
创建索引。
创建一个名称为product_info的索引。
curl -u <user>:<password> -XPUT 'http://xxxxx.public.xxxxx.aliyuncs.com:9200/product_info'
为索引设置mapping。
设置索引product_info的类型为_doc(7.0及以上版本必须为_doc),包含了productName、annual_rate和describe字段,并定义了各字段所使用的分词器。
curl -u <user>:<password> -XPUT 'http://xxxxx.public.xxxxx.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"} } } }'
创建文档并插入数据。
创建单个文档。
在类型为_doc的
product_info
索引中,创建了一个名称为1
的文档,并向文档中插入一条数据。curl -u <user>:<password> -XPOST 'http://xxxxx.public.xxxxx.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和2的文档,并分别向文档中插入了一条数据。
curl -u <user>:<password> -XPOST xxxxx.public.xxxxx.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"}'
搜索文档
搜索名称为1的文档。
curl -u <user>:<password> -XGET 'xxxxx.public.xxxxx.aliyuncs.com:9200/product_info/_doc/1?pretty'
删除索引
删除名称为product_info的索引。
curl -u <user>:<password> -XDELETE 'xxxxx.public.xxxxx.aliyuncs.com:9200/product_info'
Elasticsearch实例返回结果如下: