与 Elasticsearch 通信

    如果你使用的是 JAVA,Elasticsearch 内置了两个客户端,你可以在你的代码中使用:

    节点客户端:
    节点客户端以一个 无数据节点 的身份加入了一个集群。换句话说,它自身是没有任何数据的,但是他知道什么数据在集群中的哪一个节点上,然后就可以请求转发到正确的节点上并进行连接。

    传输客户端:
    更加轻量的传输客户端可以被用来向远程集群发送请求。他并不加入集群本身,而是把请求转发到集群中的节点。


    Java 的客户端的版本号必须要与 Elasticsearch 节点所用的版本号一样,不然他们之间可能无法识别。


    更多关于 Java API 的说明可以在这里找到 Guide.

    通过 HTTP 向 RESTful API 传送 json

    其他的语言可以通过9200端口与 Elasticsearch 的 RESTful API 进行通信。事实上,如你所见,你甚至可以使用行命令 来与 Elasticsearch 通信。



    向 Elasticsearch 发出的请求和其他所有的 HTTP 请求的组成部分是一致的。例如,计算集群中文件的数量,我们就可以使用:

    1. 相应的 HTTP 请求方法 或者 变量 : GET, POST, , HEAD 或者 DELETE
    2. 集群中任意一个节点的访问协议、主机名以及端口。
    3. 任意一个查询后再加上 就可以生成 更加美观 的JSON反馈,以增强可读性。
    4. 一个 JSON 编码的请求主体(如果需要的话)。

    Elasticsearch 将会返回一个 HTTP 状态码类似于 ‘200 OK’,以及一个 JSON 格式的主体(除了单纯的 ‘HEAD’ 请求),上面的请求会得到下方的 JSON 主体:

    在反馈中,我们并没有看见 HTTP 的头部信息,因为我们没有告知 curl 显示这些内容。如果你想看到头部信息,可以在使用 curl 命令的时候再加上 这个参数:

    我们将会简写成这样: