跳到主要内容

七、Elasticsearch 教程: RESTful API

有多种方式可以和 Elasticsearch 进行交互,它们的唯一区别就是我们是否使用了 Java

Java API

Elasticsearch 为 Java 用户提供了两种内置客户端

1、 节点客户端(nodeclient);

节点客户端以无数据节点 (none data node) 身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上

2、 传输客户端(Transportclient);

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

两个Java 客户端都通过 9300 端口和 Elasticsearch 传输协议 ( Elasticsearch Transport Protocol ) 与 Elasticsearch 进行交互

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

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

> 注意 > > 即使你用的是 Java 语言,我们也不推荐你使用 Java API。而是使用下面要介绍的 RESTFul API

RESTful API

Elasticsearch 的 RESTful API 使用 HTTP 作为传输协议,使用 JSON 作为数据交换格式

所有的语言都可以使用 RESTful API,通过 9200 端口的与 Elasticsearch 进行通信

我们可以使用自己最喜欢的 WEB 客户端,事实上,Unix 安装课程中所见,我们甚至可以使用 curl 命令与 Elasticsearch 通信

> 提示 > > Elasticsearch 官方提供了多种程序语言的客户端: Groovy,Javascript, .NET,PHP,Perl,Python,以及 Ruby,还有很多由社区提供的客户端和插件,你可以访问 文档 查看详情

因为是基于 HTTP 的 RESTFul API,所以向 Elasticsearch 发出的请求的组成部分与其它普通的 HTTP 请求是一样的