1,索引词(term)
能够被索引的精确词,foo foO Foo 三者是不一样的索引词,索引词是可以通过term查询进行准确的搜索
2,文本(text)
是一段普通的非结构化文字,被分析成一个个索引词,存在ES索引库中
3,分析(analysis)
将文本转换为索引词的过程,分析结果依赖于分词器 eg:FOO BAR_Foo 这几个单词有可能会被分析成相同的索引词foo 和bar
4,集群(cluster)
由一个或多个节点组成,对外提供服务,对外提供索引和搜索功能
ES 集群结构如图:
5,节点(node)
一个节点是一个逻辑上独立的服务,它是集群的一部分,可以存储数据,并参与集群的索引和搜索功能。
6,路由(routing)
当存储一个文档的时候,它会存储在唯一的主分片中,具体哪个分片是通过散列值进行选择
7,分片(shard)
单个Lucene实例,这是ES管理的比较底层的功能,索引是指向主分片与副本分片的逻辑空间,对于使用,只需要指定分片的数量
8,主分片(primary shard)
每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中。默认一个索引5个主分片,可以自定义数量,一旦建立不可修改
9,副本分片(replica shard)
每一个分片有零个或多个副本。副本主要是主分片的复制,其中有两个目的:
□增加高可用性:当主分片失败的时候,可以从副本分片中选择一个作为主分片。
□提高性能:当查询的时候可以到主分片或者副本分片中进行查询。默认情况下,一个主分片配有一个副本,但副本的数量可以在后面动态地配置增加。副本分片必须部署在不同的节点上,不能部署在和主分片相同的节点上。
分片主要有两个很重要的原因是:
□允许水平分割扩展数据。
□允许分配和并行操作(可能在多个节点上)从而提高性能和吞吐量。
这些很强大的功能对用户来说是透明的,你不需要做什么操作,系统会自动处理。
10.复制(replica)
复制是一个非常有用的功能,不然会有单点问题。当网络中的某个节点出现问题的时候,复制可以对故障进行转移,保证系统的高可用。因此,Elasticsearch允许你创建一个或多个拷贝,你的索引分片就形成了所谓的副本或副本分片。
复制是重要的,主要的原因有:
□它提供了高可用性,当节点失败的时候不受影响。需要注意的是,一个复制的分片不会存储在同一个节点中。
□它允许你扩展搜索量,提高并发量,因为搜索可以在所有副本上并行执行。
每个索引可以拆分成多个分片。索引可以复制零个或者多个分片。一旦复制,每个索引就有了主分片和副本分片。分片的数量和副本的数量可以在创建索引时定义。当创建索引后,你可以随时改变副本的数量,但你不能改变分片的数量。
默认情况下,每个索引分配5个分片和一个副本,这意味着你的集群节点至少要有两个节点,你将拥有5个主要的分片和5个副本分片共计10个分片。
注意:
每个Elasticsearch分片是一个Lucene的索引。有文档存储数量限制,你可以在一个单一的Lucene索引中存储的最大值为lucene-5843,极限是2147483519(=integer.max_value-128)个文档。你可以使用_cat/shards API监控分片的大小。
11.索引(index)
索引是具有相同结构的文档集合。例如,可以有一个客户信息的索引,一个订单数据的索引。在系统上索引的名字全部小写,通过这个名字可以用来执行索引、搜索、更新和删除操作等。在单个集群中,可以定义多个你想要的索引。
12.类型(type)
在索引中,可以定义一个或多个类型,类型是索引的逻辑分区。在一般情况下,一种类型被定义为具有一组公共字段的文档。例如,让我们假设你运行一个博客平台,并把所有的数据存储在一个索引中。在这个索引中,你可以定义一种类型为用户数据,一种类型为博客数据,另一种类型为评论数据。
13.文档(document)
文档是存储在Elasticsearch中的一个JSON格式的字符串。它就像在关系数据库中表的一行。每个存储在索引中的一个文档都有一个类型和一个ID,每个文档都是一个JSON对象,存储了零个或者多个字段,或者键值对。原始的JSON文档被存储在一个叫作_source的字段中。当搜索文档的时候默认返回的就是这个字段。
14.映射(mapping)
映射像关系数据库中的表结构,每一个索引都有一个映射,它定义了索引中的每一个字段类型,
15.字段(field)
文档中包含零个或多个字段,字段可以是一个简单的值(eg:字符串,整数,日期),也可以是一个数组或对象的嵌套结构,字段类似于关系数据库中表的列
16.来源字段(source field)
默认情况下,原文档将被存储在_source 这个字段中,当你查询的时候也是返回这个字段
17.主键(ID)
ID 是一个文件的唯一标识,如果再存库的时候没有提供ID,系统会自动生成一个ID,文档的index/type/id 必须是唯一的。