搜索引擎 ElasticSearch 之 步步为营2 【基础概念】

  在正式学习 ElasticSearch 之前,首先看一下 ElasticSearch 中的基本概念。

  这些概念将在以后的章节中出现多次,所以花15分钟理解一下是非常值得的。

  英文好的同学,请直接移步官网:(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/_basic_concepts.html

near realtime(nrt) :

  ElasticSearch 是一款“接近实时(nrt)”的搜索平台,为什么说“接近实时”,因为 ElasticSearch 可以在为一个“文档(document)”建立“索引(index)”后,非常短的时间内(这个时间通常在1秒之内)提供搜索支持。

cluster:

  “集群(cluster)”是由一个或多个“节点”组合,负责管理你的全部数据,并联合提供建立“索引(index)”和“搜索”服务。

  每个“集群”都有一个唯一标识,默认为"elasticsearch"。这是一个非常重要的标识,因为一个“节点(node)”只可以属于一个“集群(cluster)”。

node :

  “节点(node)”是“集群”中的一台单独搜索服务器。负责存储数据,参与"集群“中建立索引和搜索任务。

  与“集群”类似,每个“节点(node)”都有一个唯一标识,默认是随机的人名(英文名字)。

  通过配置 /config/elasticsearch.yml 文件中的 cluster.name 项,我们可以设置这个“节点(node)”属于哪一个“集群(cluster)”。

index:

  “索引(index)”是“文档(document)”的集合。一个索引中的“文档(document)”应该相似的特征。

  例如,你可以为“用户信息”创建一个“索引(index)”,为“某个产品类别”创建另一个“索引”,当然,也可以为“订单信息”创建一个“索引”......

  一个“索引(index)”应当有一个唯一的“名字”(必须全部为小写字母),这个“名字”可用于建立索引,搜索、更新和删除索引中的“文档”。

  在一个“节点(node)”中,你可以定义任意数量的“索引(index)”。

type:

  “类型(type)”是“索引(index)”中完全由你定义的一个逻辑上的类别/部分。

  每个“索引(index)”都可以包含一个或多个“类型(type)”。例如,你准备构建一个博客系统,并使用一个“索引”存储所有数据,在这个“索引”中,可以为“用户信息”定义一个“类型(type)”,为“博客数据”定义另一个“类型(type)”,为“评论数据”定义第三个“类型”......

document:

  “文档(document)”是可被建索引的一个基本信息单元。通常采用JSON格式。

  需要注意的是,每个文档必须被指定对应的“索引(index)”和“类型(type)”。

shards & replicas:

  “分片(shards)”:一个“索引”有可能存储的数据量超过了硬盘的容量,为了解决这个问题,ElasticSearch 支持将一个“索引”细分为多个“分片(shards)”,将其分布到不同的“节点”上,构成分布式搜索。

  “副本(replicas)”:“副本(replicas)”提供了高可用性,当某个节点/分片损坏时,可以从“副本”中恢复。“副本”提供了可伸缩性,在搜索量上升时,“副本”可实现并行查询。

  每个“索引(index)”都可以被分割为多个“分片”,同样,每个“索引”可以有0或多个“副本”。

  “分片”和“副本”的数量可以在每个“索引”创建时指定。但创建完成后,不可以再分配索引的”分片“。默认情况下(至少拥有两个”节点“),ElasticSearch 会分配5个”分片“,每个“分片”会产生1个”副本”。

   【搜索引擎 ElasticSearch 之 步步为营 【主目录】】

上一篇:201521123101 《Java程序设计》第5周学习总结


下一篇:用 gdb 调试 GCC 程序【转】