全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件

Restful API

更新时间:2018-05-02 09:09:18

介绍

ElasticSearch 采用 REST API, 所有的操作都可通过 Http 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)

  1. 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格式的请求主体(如果请求需要的话)

举例说明

统计Elasticserach集群中文档数命令:

  1. curl -XGET 'http://localhost:9200/_count?pretty' -d '
  2. {
  3. "query": {
  4. "match_all": {}
  5. }
  6. }'

响应如下:

  1. {
  2. "count" : 0,
  3. "_shards" : {
  4. "total" : 5,
  5. "successful" : 5,
  6. "failed" : 0
  7. }
  8. }

使用 curl-i参数显示HTTP头:

  1. curl -i -XGET 'localhost:9200/'

完整请求示例:

  1. curl -XGET 'localhost:9200/_count?pretty' -d '
  2. {
  3. "query": {
  4. "match_all": {}
  5. }
  6. }'

简写请求示例:

  1. GET /_count
  2. {
  3. "query": {
  4. "match_all": {}
  5. }
  6. }
本文导读目录