基本概念:
有几个概念 是Elasticsearch的核心,了解哪些内容从一开始会极大的帮助你简化学习过程:
Near Realtime(NRT):
Elasticsearch 是一个近乎实时搜索的平台,这意味着有一个轻微的延迟(通常是1秒)从你索引一个文档
直到它变的可检索。
Cluster:
一个集群是一个或者多个节点的集合,共同持有你整个数据和提供联合索引和搜索功能跨越所有的节点。
一个集群是由一个唯一的名称默认是elasticsearch
这个名字是重要的因为一个节点只能是一个集群的一部分,
如果节点是是创建通过这个名字加入集群。
确保 你不重用相当的集群名字在不同的环境,
否则你可能最终会让节点加入到错误的集群。
比如 你可以使用 logging-dev, logging-stage, and logging-prod 对于开发,
工作台和生产环境。
节点:
一个节点是一个简单的server, 是你集群的一部分,存储你的数据,参与集群的索引和搜索能力。
就像一个集群, 一个节点是通过一个名字定义 默认是一个随机的UUID
一个节点可以配置加入到一个特定的集群通过集群名字。
这意味着你启动一些节点在你的网络上假设你可以互相发现。
他们会自动形成和产生一个单独的集群名字elasticsearch
在一个单独的集群, 你可以有很多你需要的节点。此外,
如果没有其他 Elasticsearch nodes 当前运行在你的网络,
启动一个单独的节点默认形成一个新的单个节点cluster命名为elasticsearch
Index:
一个索引是具有相似特征的文档集合。 例如,你可以有一个索引用于客户数据,
另外一个索引用于产品目录,以及另外一个索引用于订单数据。
一个索引是由名称标示(必须小写),这个名字是用于索引当执行索引,搜索,更新和删除操作
在单个集群中,可以根据需要定义多个索引:
类型:
在索引中,你可以定义一个或者多个类型。
一个类型是一个逻辑分类/分区 其语义是完全取决于你。
通常,一个类型是定义用于文档有一组相同的公共字段。
比如,你运行一个博客平台存储所有你的数据在一个单个索引。
在这个索引,如果你定义一个类型用于用户数据,另外的类型用于blog 数据,
另外的类型用于解释数据等。
Document 文档:
一个文档是一个被索引信息的基本单元。例如,你可以有一个文档用于一个单独的客户,
另外的文档用于一个单独的产品
文档是JSON格式
在一个Index/type,你可以存储很多你需要的文档。
注意尽管一个文档物理驻留在一个索引里,一个文档实际上必须是被索引/分配到一个类型在一个索引里
shards 和replicas 分片和副本:
一个索引可以潜在的存储大量的数据,可以超过单个节点的硬件限制。
比如,10亿文档的一个单独索引可以占据1TB的磁盘空间可能不能安放在一个单独的节点
或者可能会很慢来供应请求从一个单独的节点。
为了解决这个问题,Elasticsearch 提供能力来细分你的索引到多份称为shards(分片)。
当你创建一个索引,你可以简单的定义shards 的数量。
每个shard 本身是一个全功能的独立的索引可以在集群中的任何节点上。
Sharding 分片有两个重要的原因:
1. 它允许你水平的拆分/衡量你的内容卷:
2. 它允许你分散和并行操作shards(可能到多个节点上),因此增加性能/吞吐量。
一个分片的技术是分散和它的文档时聚合到搜索请求是完全通过Elasticsearch 管理
传输到用户:
在一个网络/云 环境 失败可以是预期的在任何时候,
它是非常有用的 高度推荐的有一个失败机制 万一一个shard/node 有时候下线或者消失。
为此,Elasticsearch 允许你让一个或者多个索引的shards 的拷贝被称为replica shards, or replicas for short.
复制是重要的对于两个主要的原因:
1.它提供了高可能的万一一个shard/node fails. 对于这个原因,
它是重要的注意一个replica shard 是不要分配在相同的节点作为原始的shard
2. 它允许你扩展你的搜索卷/吞吐量 因为搜索可以被执行在所有的副本上。
总之,每个索引可以被分割到多个shards。
一个索引可以被复制0个(意味着没有副本)或者 更多。
一旦被复制,每个索引会有多个shards (原始的shards被复制的)和复制分片
shards和replicas 的数量可以在每个索引创建的时候。
当索引被创建,你可以改变replicas 的数量 但是你不能改变shards 的数量
默认的,每个索引在Elasticsearch 是被分成5个主shards和一个replica
这意味着如果你有至少2个节点在你的cluster,你的索引有5个 primary shards 和另外5个 replica shards
每个Elasticsearch shard 是一个Lunce index .