ElasticSearch-深入理解系列7-分布式增删查改
2017-08-20 22:28
239 查看
1 文档放在哪个分片?
根据如下算法计算出存储的分片
shard = hash(routing) % number_of_primary_shards
routing字符串,默认是(_id)。根据这个算法能我们知道为什么分片被确定后就不能再被修改了
2 主分片和复制分片如何交互。
假设有3个节点,索引有2主分片,每个分片有2个复制分片,所以总共会有6个分片。
2.1 写操作:(新建、更新、删除)必须先在主分片完成后再复制到其他分片。
即,相关于写操作,要在该数据设计到的所有分片上完成之后,才会返回给客户端。这个可以通过replication来设置,默认(sync)。可以设置为async,主分片完成之后就返回。
2.2 局部更新操作:
2.3 读操作:检索文档。
可以从主分片或者任意复制分片操作。
3 数据存储
es建索引写入数据,数据最先是存在内存buffer里的,然后再刷入到lucene的底层文件segment中;写入segment完毕后再执行refresh操作,refresh操作后,数据将commit到磁盘中。数据刷入到了磁盘,就可以执行查询操作了。
过程简单描述如下:内存buffer-->segment(系统缓存、可被搜索)-->refresh-->磁盘
根据如下算法计算出存储的分片
shard = hash(routing) % number_of_primary_shards
routing字符串,默认是(_id)。根据这个算法能我们知道为什么分片被确定后就不能再被修改了
2 主分片和复制分片如何交互。
假设有3个节点,索引有2主分片,每个分片有2个复制分片,所以总共会有6个分片。
2.1 写操作:(新建、更新、删除)必须先在主分片完成后再复制到其他分片。
即,相关于写操作,要在该数据设计到的所有分片上完成之后,才会返回给客户端。这个可以通过replication来设置,默认(sync)。可以设置为async,主分片完成之后就返回。
2.2 局部更新操作:
2.3 读操作:检索文档。
可以从主分片或者任意复制分片操作。
3 数据存储
es建索引写入数据,数据最先是存在内存buffer里的,然后再刷入到lucene的底层文件segment中;写入segment完毕后再执行refresh操作,refresh操作后,数据将commit到磁盘中。数据刷入到了磁盘,就可以执行查询操作了。
过程简单描述如下:内存buffer-->segment(系统缓存、可被搜索)-->refresh-->磁盘
相关文章推荐
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- ElasticSearch 深入理解系列2 -集群,分布式特性
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- ElasticSearch-深入理解系列4-文档(Document)
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- ELasticSearch 深入理解系列5 -索引、类型
- ElasticSearch-深入理解系列6 -文档操作
- ElasticSearch-深入理解系列1-ES简介
- ElasticSearch-深入理解系列8-高级查询
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- 技术文章 | 分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- 分布式缓存技术redis学习系列(六)—— 深入理解Spring Redis的使用
- 深入理解JavaScript系列
- 深入理解html5系列-文本标签
- 深入理解JavaScript系列(17):面向对象编程之概论
- 深入理解JavaScript系列(31):设计模式之代理模式
- 深入理解Ehcache系列(二)
- 深入理解JavaScript系列(47):对象创建模式(上篇)
- .Net Discovery 系列之七--深入理解.Net垃圾收集机制(拾贝篇)