ElasticSearch是什么?
1.Elasticsearch是一个基于Lucene的搜索服务器。
2.基于RESTful Web接口的全文搜索引擎。
3.Elasticsearch是一个面向文档型的数据库,一条数据就是一个文档。
索引:索引的精髓在于为了提高搜索的性能。
分片:将索引划分成多份,每一份之为分片。
1.允许水平分割/扩展内容容量;
2.允许在分片之上进行分布式、并行的操作,进而提高性能/吞吐量。
副本:
1.防止数据丢失;
2.提高平行度;
Node1 Node2 Node3
P0(分区) P1 (分区) P2(分区)
R2(副本) R0(副本) R1(副本)
扩容:增加节点
主分片的数目在索引创建的时候就已经创建下来,这个数目定义了这个索引能存的最大数据量。
但是读操作 搜索和韩慧数据,可以同时被主分片和副分片所处理,所以当有越多的副本分片,也将拥有越高的吞吐量。
数据写流程:
1.客户端请求集群的节点(任意)
2.协调节点将请求转换到指定的节点
3.主分片将数据进行保存
4.主分片需要将数据发送给副本(策略:one,all,quorum)
5.副本保存后进行反馈
6.主分片进行反馈
7.客户端获取反馈
查询数据流程:
1.客户端发送查询请求到协调节点
2.协调节点计算数据所在的分片以及所有副本位置
3.为了负载均衡可以轮询所有节点
4.将请求转发给具体节点
5.节点返回查询结果,将结果返回给客户端
更新数据流程:
1.客户端向Node1节点发送更信息请求。
2.它将请求转发主分片所在的节点Node3。
3.Node3从主分片检索文档,修改_source字段的JSON,并尝试重新索引主分片的文档。
如果文档已经被另一个进程修改,它会充重回试步骤3,超过次数后放弃。
4.如果Node3成功的更新文档,它将新版本的文档并行转发Node1和Node2上的副本分片,重新建立索引。
一旦所有的副本分片都返回成功,Node3向协调节点也返回成功,协调节点向客户端返回成功。