Elasticsearch浅析:架构原理

Elasticsearch浅析:架构原理


1 什么是Elasticsearch?

Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。

Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。

 

2 Elasticsearch应用场景

  • 将搜索框添加到应用或网站
  • 存储和分析日志,指标和安全事件数据
  • 使用机器学习自动实时建模数据行为
  • 使用Elasticsearch作为存储引擎自动化业务工作流程
  • 使用Elasticsearch作为地理信息系统(GIS)管理,集成和分析空间信息
  • 使用Elasticsearch作为生物信息学研究工具来存储和处理遗传数据

 

3 数据引擎排名

Elasticsearch浅析:架构原理

Elasticsearch浅析:架构原理

 

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集群

Elasticsearch浅析:架构原理

 

6 分布式存储

文档存储路由:shard = hash(routing) % number_of_primary_shards

  • routing默认是文档ID,可自定义。
  • 由于上面的路由规则,主分片数量不可变。

1】单个写操作(Creating, indexing, or deleting)

Elasticsearch浅析:架构原理

2】读取单个文档

Elasticsearch浅析:架构原理

3】更新文档

Elasticsearch浅析:架构原理

 

 

 

 

 

 

 

 

 

 

【后续补充】