ElasticsearchBES

    Elasticsearch Restful API

    Elasticsearch采用REST API, 所有的操作都可通过HTTP API完成,例如增删改查、别名配置等。本文介绍Restful API的使用方法。

    Elasticsearch官方参考文档

    使用REST Client交互

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

    说明: Elasticsearch官方还提供了多种程序语言的客户端,例如EGroovyJavascript.NETPHPPerlPython以及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方法,包括GETPOSTPUTHEADDELETE等。
    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
       }
    }
    上一篇
    用户手册
    下一篇
    Elasticsearch Java客户端