開源Elasticsearch提供了一系列RESTful風格的API,您可以通過curl命令或在Kibana、Postman中使用這些API。本文介紹如何通過curl命令訪問與管理Elasticsearch執行個體。
前提條件
已建立Elasticsearch執行個體。 具體操作請參見建立Elasticsearch執行個體。
已建立作業系統為Linux的ECS執行個體。具體操作,請參見自訂購買執行個體。
說明ECS執行個體需要與Elasticsearch執行個體在同一Virtual Private Cloud下。
已將阿里雲ECS執行個體的公網IP加入Elasticsearch執行個體VPC私網訪問白名單中。具體操作,請參見配置Elasticsearch執行個體公網或私網訪問白名單。
已串連ECS伺服器。具體操作,請參見通過密碼或密鑰認證登入Linux執行個體。
說明本文檔以普通使用者權限為例。
訪問Elasticsearch
執行如下命令,訪問Elasticsearch執行個體。
如果系統提示curl command not found
,請先執行命令sudo yum install curl
,在ECS中安裝curl。
curl -u <user>:<password> http://<host>:<port>
變數名 | 說明 |
<user> | Elasticsearch執行個體的訪問使用者名稱。 重要
|
<password> | 輸入Elasticsearch執行個體的使用者密碼。 如果忘記密碼,可在Elasticsearch執行個體詳情頁的安全配置中重設。更多資訊,請參見重設Elasticsearch執行個體訪問密碼。 |
<host> | Elasticsearch執行個體的私網地址。可在Elasticsearch執行個體的基本資料地區擷取。 |
<port> | Elasticsearch執行個體的訪問連接埠,一般為9200。 |
Elasticsearch執行個體訪問命令樣本:
curl -u <user>:<password> http://es-cn-x0r3****.elasticsearch.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執行個體中包含的索引資訊。
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執行個體返回結果如下: