一、简单的api使用和集群管理命令
(1)快速检查集群的健康状况
es提供了一套api,叫做cat api,可以查看es中各种各样的数据
查看集群的状态:
GET _cluster/health
GET /_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
1488006741 15:12:21 elasticsearch yellow 1 1 1 1 0 0 1 0 - 50.0%
如何快速了解集群的健康状况?green、yellow、red?
green:每个索引的primary shard和replica shard都是active状态的
yellow:每个索引的primary shard都是active状态的,但是部分replica shard不是active状态,处于不可用的状态
red:不是所有索引的primary shard都是active状态的,部分索引有数据丢失了
在单机状态出现yellow的情况是因为,kibana内置了一个index,而es默认配置是每个index分配5个primary shard和5个replica shard,但是同时要求主分片和副分片不能在同一个节点上,这就意味着当单节点的时候只有一个主分片被分配和启动,副分片并没有被分配和启动,所以会报yellow,当启动第二个节点时,副分片被分配并启动,集群就会变成green状态。
二、查看集群中的索引
GET /_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open .kibana rUm9n9wMRQCCrRDEhqneBg 1 1 1 0 3.1kb 3.1kb
三、创建索引:
PUT /test_index?pretty
四、删除索引:
DELETE /test_index?pretty
五、以商品为例的CRUD操作
1.增加数据:
格式: put /index/type/id
{
"json数据"
}
示例:
PUT /ecommerce/product/1
{
"name":"taifugao chabei",
"desc":"baowen gaoxiao",
"price":30,
"producer":"taifugao jap",
"tags":"baowen naishuai"
}
PUT /ecommerce/product/2
{
"name":"baisuishan chabei",
"desc":"touming jiankang",
"price":5,
"producer":"jingtian shenzhen",
"tags":"easy green"
}
PUT /ecommerce/product/3
{
"name":"quechao chabei",
"desc":"tishen bukun",
"price":99,
"producer":"quechao faguo",
"tags":"tishen jiankang"
}
补充:es会自动建立index和type,不需要自己手动创建,同时es会对document的没个fields去建立倒排索引,让它可以被自动搜索
2.查询操作:检索文档
格式:
GET /index/type/id
示例:
GET /ecommerce/product/1
3.update操作
update有两种操作方式:
a.直接替换当前文档
b.更新fields
两种方式的区别是:
第一种是直接替换也就是覆盖操作,之前文档中的数据都会被覆盖掉
第二种只会更新需要update的字段
格式:
a.替换操作:(同增加操作)
PUT /index/type/id
示例:
PUT /ecommerce/product/1
{
"name":"chayuan chabei",
"price":88
}
这样操作的后果就是其他字段都没有了,如果只是更改某个字段的话,需要将其他字段都带上
b.update操作
POST /index/type/id/_update
{
"doc":{
"fieldname":value
}
}
示例:
POST /ecommerce/product/1/_update
{
"doc": {
"name":"chayuan chabei"
}
}
4.删除操作: 删除文档
格式:
DELETE /index/type/id
示例:
DELETE /ecommerce/product/1