2020.9.2 ES健康值检查及简单的CRUD

2、ES的安装
(1) 六字箴言:JDK->下载->启动->验证
(2) 开发模式和生产模式
在这里插入图片描述
3、ES-node
(1)Role:节点的角色
1.Master:主节点
2.voting:投票 仅投票节点,需要设置:node.voting_only
3.coordinating:每个节点都有协调的功能,而仅协调 node.master=false node.data=false不做数据存储的功能,只做转发
(2)Node-type:节点的类型
1.Master-eligible node(候选节点) node.master设置为true的节点
2.Data node(数据节点) node.data设置为true的节点,好处把master节点和数据存储的角色分开
注:仅投票节点也是可以作为数据节点的
3.Ingest node //类似于前置 处理节点,在数据处理之前做数据转换,有点像filter
4.Machine learning node(机器学习节点)
4、ES容错机制
(1)第一步:Master选举
1.脑裂:可能会产生多个Master节点
2.避免脑裂的配置:discovery.zen.minimum master nodes=N/2+1
(2)第二步:Replica容错
(3)第三步:重启故障机
(4)第四步:数据恢复

Master选举:
触发master选举的两个条件:
1.ping所有的节点,看看有没有哪个节点自称Master
在这里插入图片描述每隔一段时间都会去触发
在这里插入图片描述在这里插入图片描述注意:
#设置主服务
node.master:true
#是否进行数据存贮
node.data:false
如果node.master配置为true代表,master节点宕机以后是有资格去竞选master节点的,一般来说master节点的作用比较单一,都是轻量级的操作,比如节点的均衡,创建和删除索引, 跟踪节点中的一部分确定哪些分片分配给哪些节点,一般master节点不用于数据节点
如果node.data为true说明这个节点是作为数据节点来使用的,这两个配置可以组合4种情况,node.data即使不配置也是true,所以当master设置为true的时候,原则上要把data设置为false,不希望master进行数据存储,因为索引和搜索都是CPU 内存 IO密集型,如果大量的搜索,master节点承担较大的压力有可能造成master节点宕机。
master设置为false,data设置为true,只存储数据,没有主节点的竞选资格,所以不参与选举,只存储数据。这种节点是数据节点data node,一般提供查询服务
master设置为true,data设置为false,有竞选主节点的资格,可以参与选举,有可能成为真正的master节点。
如果两个节点都设置为false,那么充当协调节点,仅协调,coordinating
不做存储,只做转发
2.满足node.master为true的时候才是候选节点
在这里插入图片描述
如果是本节点当选Master,票数过半后当选Master,然后告诉别的节点没戏,可以停下来了。如果是别的节点当选,那么弱弱的请求新的Master节点加入集群

5、ES集群的健康值检查 localhost:9200/_cluster/health
(1) Green:所有p shard 和 r shard均为active 集群很健康
(2) Yellow:至少一个replica shard不可用,但是数据仍然是完整的
(3) Red:至少有一个p shard为不可用状态,数据不完整,集群不可用
因为r shard是不承担数据的写入操作的,所有会丢失数据
es插件:Head master需要手动安装
在这里插入图片描述
6、最简单的增删改查CRUD
检查健康值的两种方法:

GET /_cluster/health
GET /_cat/health?v

cat常用命令:
在这里插入图片描述
(1)创建索引: PUT /索引?pretty

PUT /test_index?pretty
GET _cat/indices?v
DELETE /test_index?pretty

创建索引的时候一律采用小写字母,不要用大写字母
(2)删除索引:DELETE /test_index?pretty
(3)插入数据:

PUT /index/_doc/id
{
	json数据
}

弱化type的概念,统一写死成_doc

PUT /product/_doc/1
{
  "name":"xiaomi phone",
  "desc":"shouji zhong de zhandouji",
  "price":3999,
  "tags":[ "xingjiabi","fashao","buka"]
}
PUT /product/_doc/2
{
  "name":"xiaomi nfc phone",
  "desc":"zhichi quangongneng nfc,shouji zhong de jianjiji",
  "price":4999,
  "tags":[ "xingjiabi","fashao","gongjiaoka"]
}
PUT /product/_doc/3
{
  "name":"nfc phone",
  "desc":"shouji zhong de hongzhaji",
  "price":2999,
  "tags":[ "xingjiabi","fashao","menjinka"]
}
PUT /product/_doc/4
{
  "name":"xiaomi erji",
  "desc":"erji zhong de huangmenji",
  "price":999,
  "tags":[ "low","bufangshui","yinzhicha"]
}
PUT /product/_doc/5
{
  "name":"hongmi erji",
  "desc":"erji zhong de kendeji",
  "price":399,
  "tags":[ "lowbee","xuhangduan","zhiliangx"]
}

(4)更新数据
1)全量替换
在这里插入图片描述2)部分替换(指定字段更新)
语法:

POST /index/type/id/_update
{
	"doc"{
		"field":value
	}
}

案例:

POST /product/_doc/1/_update
{
	"doc":{
		"price": 2999
	}
}

GET /product/_doc/1

提供了基于rest风格的api和Java的rest api是一样的
(5)删除数据
语法:

DELETE /index/type/id

案例:

GET /product/_doc/1

但是再去创建的时候版本号+1,说明delete的时候,数据并没有被真正的删除掉,es删除数据的时候有延迟删除的机制,但是达到一定的时间后会真正的删除掉

查询数据:

GET /product/_search

在这里插入图片描述

GET product/_search?sort=price:asc
GET product/_search?q=price:3999&sort=price:asc

query DSL

GET /product/_doc/_search
{
	"query":{
		"match":{
			"name":"phone xiaomi"
		}
	},
	"sort":[
	{"price":"desc"}
	]
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值