所有其他语言可以使用 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 } }