文章大纲
-
《读书报告 -- Elasticsearch入门 》 -
**第四章 分布式文件存储** -
- 4.1 路由文档到分片
- 4.2 主分片和复制分片的交互
- 4.3 新建、索引和删除文档
- 4.5 局部更新文档
- 4.6 多文档模式
-
**第五章 搜索——基本的工具** - 5.1 空搜索
- 警告
- 5.2 多索引和多类别
- 5.3 分页
- 5.4 简易搜索
- 6.1 映射及分析
- 6.2 确切值 vs 全文文本
- 6.3 倒排索引
- 6.4 分析和分析器
- 6.5 映射
- 6.6 复合核心字段类型
- 对象-数组
-
第七章 请求体查询 - 7.2 结构化查询Query DSL(Query Domain Specific Language)
- 7.3 查询与过滤
- 7.4 最重要的查询
- `match_all` 查询
- `match` 查询
- `multi_match` 查询
- `range` 过滤
- `term` 过滤
- `terms` 过滤
- `exists` 和 `missing` 过滤
- 7.5 查询与过滤条件的合并
- `bool` 过滤
- `bool` 查询
- 7.6 验证查询
- 理解错误信息
- 7.7 总结
-
第八章 相关性排序 - 8.1 排序方式
- 字段值排序
《读书报告 – Elasticsearch入门 》
第四章 分布式文件存储
这章的主要内容是理解数据如何在分布式系统中存储。
4.1 路由文档到分片
创建一个新文档时,它是如何确定应该存储在分片1还是分片2上的呢?
这个过程不是随机的,因为将来要检索文档。事实上,它根据一个简单的算法决定:
shard = hash(routing) % number_of_primary_shards
routing
值是一个任意字符串,它默认是_id
但也可以自定义。这个routing
字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),余数的范围永远是0
到number_of_primary_shards - 1
,这个数字就是特定文档所在的分片。
这也解释了为什么主分片的数量只能在创建索引时定义且不能修改:如果主分片的数量在