ElasticSearch第5课之REST API
2016-08-12 17:14
295 查看
REST API既然Elasticsearch的节点已经正常运行了,我们开始与Elasticsearch进行交互。Elasticsearch提供了一个非常强大的REST API,我们可以通过它与集群进行交互。
我们可以通过REST API可以做一些事情:
1. 检查集群,节点和索引的健康,状态,以及统计信息
2. 管理集群,节点和索引数据,元数据
3. 执行CRUD(create,read,update和delete)操作,根据索引进行搜索
4. 执行高级搜索操作,比如分页,排序,过滤,聚合等等
Elasticsearch为Java用户提供了两种内置客户端:
l 节点客户端(nodeclient):
节点客户端以无数据节点身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。
l 传输客户端(Transport client):
这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
两个Java客户端都通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch TransportProtocol)。集群中的节点之间也通过9300端口进行通信。
基于HTTP协议,以JSON为数据交互格式的RESTfulAPI
其他所有程序语言都可以使用RESTful API,通过9200端口的与Elasticsearch进行通信,你可以使用你喜欢的WEB客户端,事实上,如你所见,你甚至可以通过curl命令与Elasticsearch通信。
向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:
curl -X<VERB>'<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>'-d '<BODY>'· VERB(HTTP方法):GET, POST, PUT, HEAD, DELETE· PROTOCOL:http或者https协议· HOST:Elasticsearch集群中的任何一个节点的主机名· PORT:ElasticsearchHTTP服务所在的端口,默认为9200· PATH:API路径,PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/jvm· QUERY_STRING:一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据· BODY 一个JSON格式的请求主体
举例说明,为了计算集群中的文档数量,我们可以这样做:
curl -XGET 'http://SZB-L0029554:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
Elasticsearch返回一个类似200 OK的HTTP状态码和JSON格式的响应主体(除了HEAD请求)。上面的请求会得到如下的JSON格式的响应主体:
{
"count" : 14268,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
}
}
我们看不到HTTP头是因为我们没有让curl显示它们,如果要显示,使用curl命令后跟-i参数:
curl -i -XGET 'http://SZB-L0029554:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
返回结果:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 99
{
"count" : 14348,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
}
}
我们可以通过REST API可以做一些事情:
1. 检查集群,节点和索引的健康,状态,以及统计信息
2. 管理集群,节点和索引数据,元数据
3. 执行CRUD(create,read,update和delete)操作,根据索引进行搜索
4. 执行高级搜索操作,比如分页,排序,过滤,聚合等等
Elasticsearch为Java用户提供了两种内置客户端:
l 节点客户端(nodeclient):
节点客户端以无数据节点身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。
l 传输客户端(Transport client):
这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
两个Java客户端都通过9300端口与集群交互,使用Elasticsearch传输协议(Elasticsearch TransportProtocol)。集群中的节点之间也通过9300端口进行通信。
基于HTTP协议,以JSON为数据交互格式的RESTfulAPI
其他所有程序语言都可以使用RESTful API,通过9200端口的与Elasticsearch进行通信,你可以使用你喜欢的WEB客户端,事实上,如你所见,你甚至可以通过curl命令与Elasticsearch通信。
向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:
curl -X<VERB>'<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>'-d '<BODY>'· VERB(HTTP方法):GET, POST, PUT, HEAD, DELETE· PROTOCOL:http或者https协议· HOST:Elasticsearch集群中的任何一个节点的主机名· PORT:ElasticsearchHTTP服务所在的端口,默认为9200· PATH:API路径,PATH可以包含多个组件,例如_cluster/stats或者_nodes/stats/jvm· QUERY_STRING:一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据· BODY 一个JSON格式的请求主体
举例说明,为了计算集群中的文档数量,我们可以这样做:
curl -XGET 'http://SZB-L0029554:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
Elasticsearch返回一个类似200 OK的HTTP状态码和JSON格式的响应主体(除了HEAD请求)。上面的请求会得到如下的JSON格式的响应主体:
{
"count" : 14268,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
}
}
我们看不到HTTP头是因为我们没有让curl显示它们,如果要显示,使用curl命令后跟-i参数:
curl -i -XGET 'http://SZB-L0029554:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
返回结果:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 99
{
"count" : 14348,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
}
}
相关文章推荐
- Elasticsearch 5.x (三) Elasticsearch REST API
- Eagle_elasticsearch rest api 快速上手
- 19.ELK实时日志分析平台之Elasticsearch REST API简介
- ElasticSearch 中 REST API 详解
- Elasticsearch之基础Rest API命令
- ElasticSearch通过Rest Http API完成基本操作
- 【异常】elasticsearch的RestClientAPI请求超时问题:java.lang.RuntimeException: error while performing request
- Elasticsearch简单使用系列--使用Rest API进行CRUD操作
- elasticsearch java 基于 RestClientAPI 的增删改查
- elasticsearch5.6.4 RestClient 索引操作API详细的注释给力篇值得拥有
- Elasticsearch集群配置以及REST API使用
- ElasticSearch 菜鸟笔记(三)ElasticSearch 常见REST API 操作
- ElasticSearch6.1的增删改查Rest API
- Elasticsearch 5.6.5 基础笔记(二) - Restfull API 和 分布式特性
- ElasticSearch 中 REST API 详解
- Elasticsearch的CRUD:REST与Java API
- Elasticsearch简单使用系列--使用Rest API进行CRUD操作
- ES 常用管理REST API (持续更新)
- REST API 安全设计
- 关于REST的文章—— 如何查看我的订单-REST的流程API设计案例