Elasticsearch采用REST API, 所有的操作都可通过HTTP API完成,例如增删改查、别名配置等。本文介绍Restful API的使用方法。
Elasticsearch官方参考文档
使用REST Client交互
客户端访问仅支持HTTP / TCP方式,建议您采用Elasticsearch官方提供的Java REST Client。
使用Java API交互
Elasticsearch为Java用户提供了内置客户端,包括TransportClient和Java REST Client。Elasticsearch 7.0中已经弃用TransportClient,在8.0中完全移除它。因此在实际开发中建议您使用Java REST Client。关于Java API的更多信息,请参见官方Java API以及Java API使用说明文档。
说明 Java客户端所使用的Elasticsearch版本必须与Elasticsearch集群版本一致,否则可能无法相互识别。
RESTful API(HTTP)请求参数说明
您可以使用RESTful API或者curl命令,通过9200端口与Elasticsearch进行通信。
说明 Elasticsearch官方提供了多种程序语言的客户端,例如
Groovy
、Javascript
、.NET
、PHP
、Perl
、Python
以及Ruby
以及很多由社区提供的客户端和插件,您可以在Community Contributed Clients中获取。
curl命令(HTTP)由以下几部分组成。
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
参数 | 说明 |
---|---|
VERB |
HTTP方法,包括GET 、POST 、PUT 、HEAD 、DELETE 。
|
PROTOCOL |
http 或者https 协议(只有在Elasticsearch前面有https 代理的时候可用)。
|
HOST |
Elasticsearch集群中的任何一个节点的主机名,对于本地节点,可使用localhost 。
|
PORT |
Elasticsearch HTTP服务所在的端口,默认为9200 。
|
PATH |
API路径(例如_count 将返回集群中文档的数量),PATH 可以包含多个组件,例如_cluster/stats 或者_nodes/stats/jvm 。
|
QUERY_STRING |
可选的查询请求参数,例如?pretty 参数可使请求返回的JSON数据更加美观易读。
|
BODY |
JSON格式的请求主体(可选)。 |
RESTful API(HTTP)请求示例
通过以下命令,统计Elasticserach集群中文档的数量。
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
返回结果如下。
{
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}
使用curl -i
显示HTTP请求头,例如curl -i -XGET 'localhost:9200/'
,完整请求示例如下。
curl -i -XGET 'localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
简写请求示例如下。
GET /_count
{
"query": {
"match_all": {}
}
}