ElasticSearch采用REST API, 所有的操作都可通过HTTP API完成,例如增删改查、别名配置等。本文档为您介绍Restful API的使用方法,帮助您快速使用Restful API完成相关业务。

说明 官方参考文档Elasticsearch Restful API

Elasticsearch Reference [5.5]

Single document APIs

Multi-document APIs

使用REST Client交互

客户端访问仅支持HTTP / TCP方式,建议您采用Elasticsearch官方提供的Java REST Client

使用Java API交互

Elasticsearch为Java用户提供了内置客户端。关于Java API的更多信息,请查看官方Java API文档。

传输客户端(Transport client)

传输客户端能够发送请求到远程集群,它自己不加入集群,只是简单转发请求给集群中的节点。

传输客户端通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch Transport Protocol)。

集群中的节点之间也通过9300端口进行通信。如果此端口未开放,您的节点将不能组成集群。

说明 Java客户端所在的Elasticsearch版本必须与集群中其他节点一致,否则它们可能无法相互识别。

RESTful API(HTTP)

其他所有程序语言都可以使用RESTful API,通过9200端口与Elasticsearch进行通信。可使用您喜欢的Web客户端,或通过curl命令与Elasticsearch通信。

说明

Elasticsearch官方提供了多种程序语言的客户端,例如GroovyJavascript.NETPHPPerlPython以及Ruby

还有很多由社区提供的客户端和插件,您可以在官方文档中获取。

curl请求组成(HTTP)

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

  • VERB:HTTP方法,包括GETPOSTPUTHEADDELETE
  • PROTOCOLhttp或者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格式的请求主体(如果请求需要的话)。

示例

统计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 -XGET 'localhost:9200/_count?pretty' -d '
{ 
    "query": { 
        "match_all": {} 
    }
}'
简写请求示例:
GET /_count
{ 
    "query": { 
        "match_all": {} 
    }
}