Elasticsearch Restful API
更新时间:2021-09-29
Elasticsearch采用REST API, 所有的操作都可通过HTTP API完成,例如增删改查、别名配置等。本文介绍Restful API的使用方法。
Elasticsearch官方参考文档
-
单文档 API:
-
多文档 API:
使用REST Client交互
客户端访问仅支持HTTP / TCP方式,建议您采用Elasticsearch官方提供的Elasticsearch client。
说明: Elasticsearch官方还提供了多种程序语言的客户端,例如EGroovy
、Javascript
、.NET
、PHP
、Perl
、Python
以及Ruby
以及很多由社区提供的客户端和插件,您可以在Community Contributed Clients中获取。
使用Java API交互
Elasticsearch为Java用户提供了内置客户端,包括TransportClient和Java REST Client。Elasticsearch 7.0中已经弃用TransportClient,在8.0中完全移除它。因此在实际开发中建议您使用Java REST Client。
- Java Low Level REST Client:Elasticsearch的官方低级客户端,允许通过http与Elasticsearch集群进行通信,需要使用者对http的请求进行编解码。它与所有Elasticsearch版本兼容。
- Java High Level REST Client:Elasticsearch的官方高级客户端,基于Low Level REST Client开发,它提供了更多的API,接受请求对象作为参数并返回响应对象,由客户端自己处理编码和解码。使用时需要注意,客户端版本需要与Elasticsearch版本相同。
RESTful API请求参数说明
您可以使用RESTful API或者curl命令,通过8200端口与Elasticsearch进行通信。
curl命令(HTTP)由以下几部分组成。
curl -u <USER:PWD> -H<HEADER> -X<METHOD> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
参数 | 说明 |
---|---|
USER:PWD |
-u 参数为baidu Elasticsearch的用户名密码,例如:superuser:mypassword ,如果使用HTTP Basic认证方式则不需要加-u 参数 |
HEADER |
HTTP请求头,例如:"Content-Type: application/json" |
METHOD |
HTTP方法,包括GET 、POST 、PUT 、HEAD 、DELETE 等。 |
PROTOCOL |
http 或者https 协议。 |
HOST |
Elasticsearch的主机名。 |
PORT |
Elasticsearch HTTP服务所在的端口,默认为8200 。 |
PATH |
API路径(例如/_cluster/health 或者_cat/nodes 等)。 |
QUERY_STRING |
可选的查询请求参数,例如?pretty 参数可使请求返回的JSON数据更加美观易读。 |
BODY |
JSON格式的请求主体(可选)。 |
RESTful API(HTTP)请求示例
通过以下命令,统计Elasticserach集群中doc的数量。
curl -u user:password --header 'Content-Type: application/json' -XGET 'http://host:port/_count' -d '
{
"query": {
"match_all": {}
}
}'
返回结果如下。
{
"count": 1646413284,
"_shards": {
"total": 1147,
"successful": 1147,
"skipped": 0,
"failed": 0
}
}