Elasticsearch浅析:架构原理
Elasticsearch浅析:架构原理
1 什么是Elasticsearch?
Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。
Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。
2 Elasticsearch应用场景
- 将搜索框添加到应用或网站
- 存储和分析日志,指标和安全事件数据
- 使用机器学习自动实时建模数据行为
- 使用Elasticsearch作为存储引擎自动化业务工作流程
- 使用Elasticsearch作为地理信息系统(GIS)管理,集成和分析空间信息
- 使用Elasticsearch作为生物信息学研究工具来存储和处理遗传数据
3 数据引擎排名
4 Elasticsearch概念
- 集群(Cluster):一组拥有共同的 cluster name 的节点。
- 节点(Node):集群中的一个 Elasticearch 实例。
- 索引(Index) :相当于关系数据库中的database概念,一个集群中可以包含多个索引。
- 主分片(Primary shard): 索引的子集,索引可以切分成多个分片,分布到不同的集群节点上。分片对应的是 Lucene 中的索引。
- 副本分片(Replica shard):每个主分片可以有一个或者多个副本。
- 类型(Type):相当于数据库中的table概念,mapping是针对 Type 的。同一个索引里可以包含多个 Type。
- 映射(Mapping): 相当于数据库中的schema,用来约束字段的类型,不过 Elasticsearch 的 mapping 可以自动根据数据创建。
- 文档(Document) :相当于数据库中的row。
- 字段(Field):相当于数据库中的column。
5 Elasticsearch集群
6 分布式存储
文档存储路由:shard = hash(routing) % number_of_primary_shards
- routing默认是文档ID,可自定义。
- 由于上面的路由规则,主分片数量不可变。
1】单个写操作(Creating, indexing, or deleting)
2】读取单个文档
3】更新文档
【后续补充】