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官方提供了多种程序语言的客户端,例如GroovyJavascript.NETPHPPerlPython以及Ruby以及很多由社区提供的客户端和插件,您可以在Community Contributed Clients中获取。

curl命令(HTTP)由以下几部分组成。

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
参数 说明
VERB HTTP方法,包括GETPOSTPUTHEADDELETE
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": {} 
    }
}