通過curl命令訪問與管理Elasticsearch
開源Elasticsearch提供了一系列RESTful風(fēng)格的API,您可以通過curl命令或在Kibana、Postman中使用這些API。本文介紹如何通過curl命令訪問與管理Elasticsearch實例或Serverless應(yīng)用。
前提條件
已創(chuàng)建Elasticsearch實例或Serverless應(yīng)用。 具體操作請參見創(chuàng)建阿里云Elasticsearch實例和創(chuàng)建Serverless應(yīng)用。
已創(chuàng)建操作系統(tǒng)為Linux的ECS實例。具體操作,請參見自定義購買實例。
說明ECS實例需要與Elasticsearch實例在同一專有網(wǎng)絡(luò)VPC下,或與Serverless應(yīng)用在同一地域下。
已將阿里云ECS實例的公網(wǎng)IP加入Elasticsearch實例VPC私網(wǎng)訪問白名單中。具體操作,請參見配置Elasticsearch實例公網(wǎng)或私網(wǎng)訪問白名單。
已將阿里云ECS實例的公網(wǎng)IP加入Serverless應(yīng)用公網(wǎng)地址訪問白名單中。具體操作,請參見配置Serverless應(yīng)用公網(wǎng)訪問白名單。
已連接ECS服務(wù)器。具體操作,請參見通過密碼或密鑰認(rèn)證登錄Linux實例。
說明本文檔以普通用戶權(quán)限為例。
訪問Elasticsearch
執(zhí)行如下命令,訪問阿里云Elasticsearch實例。
如果系統(tǒng)提示curl command not found
,請先執(zhí)行命令sudo yum install curl
,在ECS中安裝curl。
curl -u <user>:<password> http://<host>:<port>
變量名 | 說明 |
<user> | Elasticsearch實例的訪問用戶名,或Serverless應(yīng)用的用戶名稱,在應(yīng)用詳情頁獲取。 重要
|
<password> | 輸入Elasticsearch實例或Serverless應(yīng)用的用戶密碼。 如果忘記密碼,可在Elasticsearch實例詳情頁的安全配置中重置,或在Serverless應(yīng)用詳情頁的基本信息區(qū)域重置。更多信息,請參見重置Elasticsearch實例訪問密碼。 |
<host> | Elasticsearch實例的私網(wǎng)地址,或Serverless應(yīng)用的公網(wǎng)訪問地址。可在Elasticsearch實例或Serverless應(yīng)用的基本信息區(qū)域獲取。 |
<port> | Elasticsearch實例或Serverless應(yīng)用的訪問端口,一般為9200。 |
Elasticsearch實例訪問命令示例:
curl -u <user>:<password> http://es-cn-x0r3****.elasticsearch.aliyuncs.com:9200
Serverless應(yīng)用訪問命令示例:
curl -u qing****-***:<password> http://qin****-***.public.cn-hangzhou.es-serverless.aliyuncs.com:9200
Elasticsearch實例返回結(jié)果如下:
管理Elasticsearch的curl命令
以下介紹通過管理Elasticsearch的curl命令。更多命令,請參見Elasticsearch官方文檔。
查看Elasticsearch信息
查看Elasticsearch實例健康狀況。
curl -u <user>:<password> -XGET 'http://xxxxx.public.xxxxx.aliyuncs.com:9200/_cat/health?v'
查看Elasticsearch實例或Serverless應(yīng)用中包含的索引信息。
curl -u <user>:<password> -XGET 'http://http://xxxxx.public.xxxxx.aliyuncs.com:9200/_cat/indices?v'
創(chuàng)建索引和文檔
創(chuàng)建索引。
創(chuàng)建一個名稱為product_info的索引。
curl -u <user>:<password> -XPUT 'http://xxxxx.public.xxxxx.aliyuncs.com:9200/product_info'
為索引設(shè)置mapping。
設(shè)置索引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"} } } }'
創(chuàng)建文檔并插入數(shù)據(jù)。
創(chuàng)建單個文檔。
在類型為_doc的
product_info
索引中,創(chuàng)建了一個名稱為1
的文檔,并向文檔中插入一條數(shù)據(jù)。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" }'
創(chuàng)建多個文檔。
在類型為_doc的product_info索引中,創(chuàng)建了一個名稱為1和2的文檔,并分別向文檔中插入了一條數(shù)據(jù)。
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實例返回結(jié)果如下: