所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信,你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上,正如你所看到的,你甚至可以使用 ​​curl​​ 命令来和 Elasticsearch 交互。

Elasticsearch 为以下语言提供了官方客户端--Groovy、JavaScript、.NET、 PHP、 Perl、 Python 和 Ruby—​还有很多社区提供的客户端和插件,所有这些都可以在 ​​Elasticsearch Clients​​ 中找到。

一个 Elasticsearch 请求和任何 HTTP 请求一样由若干相同的部件组成:

被 ​​< >​​ 标记的部件:

​VERB​

适当的 HTTP 方法谓词 : ​​GET​​​、 ​​POST​​​、 ​​PUT​​​、 ​​HEAD​​​ 或者 ​​DELETE​​。

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


例如,计算集群中文档的数量,我们可以用这个:

curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}
'

Elasticsearch 返回一个 HTTP 状态码(例如:​​200 OK​​​)和(除`HEAD`请求)一个 JSON 格式的返回值。前面的 ​​curl​​ 请求将返回一个像下面一样的 JSON 体:

{
"count" : 0,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
}
}