elasticsearch天然就是分布式搜索引擎
Indices(索引)->Types(类型)->Documents(文档)->Fields(属性)
es 的分布式架构原理:
每个索引都可以拆分为多个shard,每个shard都有一个primary和多个replica,作为主从从而实现了高可用,可以在多个机器上。
es 集群多个节点,会自动选举一个节点为 master 节点,这个 master 节点其实就是干一些管理的工作的,比如维护索引元数据、负责切换 primary shard 和 replica shard 身份等。要是 master 节点宕机了,那么会重新选举一个节点为 master 节点。
es写入数据的过程
- 讲请求写入到协调节点(coordinating node)
- 协调节点对请求进行路由,发送到拥有primary shard的节点
- 实际的primary节点对写进行处理,然后将数据同步到replica shard
- 返回处理结果给客户端
es读取数据的过程
- 请求发送到coordinating node
- 根据doc id进行hash,看shard在哪个机器上
- 随机选择一个primary或者replica shard进行数据读取,返回document到coordinating node
- 返回到client
es写入数据底层原理
- 每1s refresh到os cache(这个时候才能被搜索到,所以es被称为准实时的)
- 每5s flush到translog (因为这5s中数据在操作系统缓存中,所以比如机器断电可能有5s的数据缺失)
- translog大到一定程度,或者达到默认时间30ms会到一个commit point,写入一个磁盘文件
删除文件
每隔一秒会