ES简单学习

概念

集群

在同一个子网内,多个ES节点(master、data、client)组成的一个P2P系统。节点间的通讯和数据分配由ES自动管理。

节点

每一个运行的实例叫做节点。

索引

该索引是名词而不是动词,相当于MySQL里的database。如下图所示

分片与副本

ES自动将数据存储到多个主分片中,也就是说每个主分片保存着某索引的一部分数据。

副本分片是主分片的备份,拥有主分片的数据。一个主分片可以有多个副本。

建立索引的时候默认会建立5个主分片,每个主分片一个副本分片,一共10个分片。也可以在建立索引的时候手动设置主分片数量和副本分片数量。在索引建立完成后,就只能改变副本分片的数量。

ES禁止同一个分片的主分片和副本分片在同一个ES实例节点上。

master节点

在配置文件里配置节点为master节点。一个ES集群可以有多个master节点。master节点负责集群的变更。master节点不参与文档层面的变更和搜索,所以master节点并不会因为流量增长而成为瓶颈。

data节点

data节点持有数据和倒排索引。负责文档的搜索和存储。

client节点

node.master 和 node.data 都设置为false。该客户端节点扮演一个负载均衡的角色。将到来的请求路由到集群各个节点。

recovery

当集群中有节点加入或退出的时候,ES会自动重新分配分片。此代价较高。可以先将自动分片功能关闭,然后添加节点进入集群,手动给其节点分配分片,之后再打开自动分片功能。

自动发现机制

ES2.0之前采用的是ping机制,只要是在同一子网下网络可通且cluster.name相同,就将该节点加入集群。

ES2.0版本之后采用单播和组播的机制(默认单播):配置相同的cluster.name,然后设置discovery.zen.ping.unicast.hosts

ES的了解

功能特性

1.以Lucene搜索引擎库为底层架构

2.分布式搜索引擎,可水平扩展,比如添加节点的时候可以自动均衡数据

3.支持全文索引,搜索功能强大

4.交互数据采用josn模式,且ES提供了基于json的query DSL查询语言

缺点

1.不支持事务

2.读写有一定的延迟。写入的数据最快1s才能被检索到,这样做的原因是提高写入的吞吐量。这个刷新频率是可以手动调整的,一般情况下不建议手工调整。

3.ES没有任何内置的身份验证或授权系统。当然闭源的x-pack除外。

近实时的搜索

当文档写入的时候并不能直接检索出数据,默认需要1S的reflush才能看到。如果业务对实时性要求比较高,可以调用_refresh接口。

全文检索

对文章中的每个词建立一个索引,并指明该词在文章中的位置和数量。也就是说每个词元都是一个倒排索引。

当用户查询的时候,会根据建立的索引来进行查找。

ES没有事务,怎么解决并发冲突的问题呢?

1.悲观锁

  • 优点:方便,直接加锁,不需要额外的操作
  • 缺点:并发能力很低,同一时间只能有一条线程操作数据

2.乐观锁

  • 优点:并发能力高,不给数据加锁,大量线程并发操作
  • 缺点:麻烦,每次更新的时候都先要比对版本号,然后需要更新加载数据再修改再写入。
  • ES中是通过乐观锁解决并发冲突的,采用_version
  • _version :第一次创建document的时候,他的版本号为1,此后每次对该document进行update、delete都会对这个版本号自动加1 . 在删除一个document的时候,它不是立刻就物理删除的,它的一些版本号数据还是保留的:先删除再创建其实是再删除的基础上再加1.

ES的写逻辑

索引的写入:

索引的创建和删除都是在master节点上进行的。如果写入的请求发到了非master节点,那么该节点会将请求转发至master节点,master节点会更改路由和元数据信息,并将对应的修改同步到其他master节点,需要一半以上的候选master节点返回成功才算写入成功。

文档的写入:

请求发到其中一个节点,做路由计算(hash(_id)/候选master +1 )确定请求发往哪一个主分片。

主分片处理请求的同时,执行translog的写入操作和将请求发往其副本分片,等其中一个副本分片返回成功之后,主分片返回客户端写入成功。

 

常用插件

elasticseach-head

head插件只需要安装到其中一台机器上。

功能:ES集群状态查看、索引数据查看、DSL实现增删改查操作

cerebo插件

功能:集群监控

kibana

除了支持各种数据的可视化之外,最重要的是:支持Dev Tool进行RESTFUL API增删改查操作。

但是在功能和可用性上比不上grafana

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值