ElasticSearch实践(三)Rest API简介
REST APIElasticsearch提供了非常全面和强大的REST API,可以使用API与集群进行交互。 使用API可以做什么呢?检查群集,节点和索引运行状况,状态和统计信息管理您的群集,节点和索引数据和元数据对索引执行CRUD(创建,读取,更新和删除)和搜索操作执行高级搜索操作,例如分页,排序,过滤,脚本编写,聚合等等API命令可以在Kibana控制台中运行。使...
REST API
Elasticsearch提供了非常全面和强大的REST API,可以使用API与集群进行交互。 使用API可以做什么呢?
- 检查群集,节点和索引运行状况,状态和统计信息
- 管理您的群集,节点和索引数据和元数据
- 对索引执行CRUD(创建,读取,更新和删除)和搜索操作
- 执行高级搜索操作,例如分页,排序,过滤,脚本编写,聚合等等
API命令可以在Kibana控制台中运行。
使用_cat API查看集群的运行情况,可以在kibana控制使用命令查询,也可以通过rest服务查询。使用curl或者其他可以进行HTTP/REST调用的工具,或者在浏览器,都可以调用ElasticSearch的Rest API。
集群健康
GET /_cat/health?v
[elasticsearch@legaoyun10514 elasticsearch-6.5.1]$ curl http://192.168.105.10:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1544146216 01:30:16 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%
可以看到名称为elasticsearch的集群,已经启动,且状态是green,集群的状态有:
green,集群状态良好,集群功能齐全
yellow,所有数据都可用,但某些副本尚未配备,集群功能几圈
red,某些数据不可用,集群只有部分功能
当集群状态为红色时,虽然elasticsearch还可以通过可用的分片提供服务,但是存在不可用分片,还是要尽快的修复它
从上面的响应中看到,可以看到elasticsearch有一个节点,有0个分片,因为还没有数据。请注意,目前使用的是默认的集群名称(elasticsearch),ElasticSearch默认使用单播网络发现同一台机器上的其他节点。可以随时在机器上启动多个节点,启动的节点会自动加入一个指定名称的集群。查看健康状态,就可以看到总节点数发生变化。
集群节点列表
GET /_cat/nodes?v
[elasticsearch@legaoyun10514 elasticsearch-6.5.1]$ curl http://192.168.105.10:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.105.10 25 98 0 0.02 0.04 0.05 mdi * 8h_m9Uy
可以看到名称为8h_m9Uy,ip为192.168.105.10的节点,单独在集群中
查询索引列表
GET /_cat/indices?v
[elasticsearch@legaoyun10514 elasticsearch-6.5.1]$ curl http://192.168.105.10:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
直接告诉我们现在集群中还没有索引
创建索引
创建名称为demand的索引,再次查询索引
PUT /demand?pretty
GET /_cat/indices?v
第一个命令,使用PUT方式创建名称为demand的索引,后面接pretty是告诉ElasticSearch,如果有返回数据的话,打印格式化后的json。
PUT http://192.168.105.10:9200/demand?pretty
响应
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "demand"
}
第二个命令,在创建索引后,查看索引
[root@legaoyun10514 package]# curl http://192.168.105.10:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open demand BGcTxGxVRtaEZOnHSHfXWA 5 1 0 0 1.1kb 1.1kb
从第二个命令的结果中可以看到,现在有一个名称为demand的索引,有5个主分片和1个副本,包含0个文档。索引健康状况是yellow,yellow表示某些副本尚未创建。 这个索引发生这种情况的原因是因为默认情况下Elasticsearch索引创建了一个副本。 但是由于我们目前只有一个节点在运行,因此在其他节点加入集群之前,无法成功的创建一个副本(用于HA)。 当其他节点的副本创建之后,此索引的运行状况将变为绿色。
索引和查询
PUT /customer/_doc/1?pretty
GET /customer/_doc/1?pretty
GET /_cat/indices?v
第一个命令将文档插入demand索引,如下将一个id为1的“需求”数据索引到已经创建的索引demand中。
PUT http://192.168.105.10:9200/demand/_doc/1?pretty
{
"projectName" : "八达岭长城",
"address":"北京市"
}
响应
{
"_index": "demand",
"_type": "_doc",
"_id": "1",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
这样一个“demand”文档就插入到demand索引中,并在在插入索引的时候需要指定文档的id为1。
其实,ElasticSearch在将文档插入到索引的时候,并不需要先显示的创建索引。在这个例子中,在插入文档时如果demand索引不存在,则会自动按照默认配置创建索引。
第二个命令,检索刚才插入到demand索引的文档
[root@legaoyun10514 package]# curl http://192.168.105.10:9200/demand/_doc/1?pretty
{
"_index" : "demand",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : {
"projectName" : "八达岭长城",
"address" : "北京市"
}
}
没有任何异常,这样,我们就通过id1请求到了之前插入到demand索引的文档,且返回到了_source字段中。
第三个命令,查询demand索引
[root@legaoyun10514 package]# curl http://192.168.105.10:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open demand BGcTxGxVRtaEZOnHSHfXWA 5 1 1 0 5.2kb 5.2kb
发现索引demand已经有一个文档了
删除索引
DELETE /customer?pretty
GET /_cat/indices?v
第一个命令,删除demand索引
DELETE http://192.168.105.10:9200/demand?pretty
响应
{
"acknowledged": true
}
第二个命令查看所有索引列表
[root@legaoyun10514 package]# curl http://192.168.105.10:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
索引已经删除
直接插入文档
PUT http://192.168.105.10:9200/demand/_doc/1?pretty
{
"projectName" : "八达岭长城",
"address":"北京市"
}
返回
{
"_index": "demand",
"_type": "_doc",
"_id": "100",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 0,
"_primary_term": 1
}
查看所有索引列表
[root@legaoyun10514 package]# curl http://192.168.105.10:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open demand MsrUocFNSfGdi0vCw5_PDw 5 1 1 0 4.9kb 4.9kb
索引已存在。
通过基本的API,先了解一下es吧^_^
更多推荐
所有评论(0)