# Glossary of terms (词汇表)

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html)

译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=9405932](http://www.apache.wiki/pages/viewpage.action?pageId=9405932)

贡献者 : [张学](/display/~zhangxue)，[ApacheCN](/display/~apachecn)，[Apache中文网](/display/~apachechina)

##### analysis（分析）

**Analysis**（分析）是将 [full text](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html#glossary-text)（全文）转化为 [terms](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html#glossary-term)（词条）的过程。使用不同的 **analyzer**（分词器），`**FOO BAR**，``**Foo-Bar**，``**foo**，**bar**` `这些短语可能都会生成 `**foo **和 `**`b``ar `**`两个词条，实际的 **index**（索引）里面存储的就是这些 **terms**（词条）`_`。`_`针对`` **FoO:bAR**的 **full text query**（全文检索），会先将其分析成为 **foo,**`**bar** 这样的词条，然后匹配存储在 **index**（索引）中的 **term**（词条）。正是这个 **analysis**（分析）的过程（发生在索引和搜索时）使得 **elasticsearch **能够执行 **full text queries**（全文检索）。也可以参阅 [text](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html#glossary-text)（文本）和 [term](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/glossary.html#glossary-term)（词条）了解更多细节信息。```

##### cluster （集群）

**cluster**（集群）是由拥有同一个集群名的一个或者多个节点组成。每个集群拥有一个主节点，它由集群自行选举出来，在当前主节点挂了，能被其他节点取代。

##### document （文档）

**document（文档）**是存储在**elasticsearch**中的**json**文档。类似于关系型数据库中的一行记录。每个文档存储在一个**index**（索引）中，它具有一个**type**（类型）和一个**id**。文档是包含零到多个**fields**（属性）或者键值对的**json**对象（类似于其他语言中的hash/hashmap/associative array）。当一个文档被**indexed**（索引）的时候，它的原始**json**文档会被存储成**_source**属性，对该文档进行**get**或者**search**操作时，默认返回的就是改属性。

##### id 

文档的**ID**标识一个文档。文档的index/type/id必须唯一。如果没有提供**ID**，**elasticsearch**会自动生成一个**ID**。（查询**routing**（路由）获取更多信息）

##### field（属性） 

一个文档包涵一系列的属性或者键值对。它的值可以是简单标量值（如字符串，整型数，日期），或者是像数组和对象一样的嵌套结构。属性类似于关系型数据库中的列。每个属性的**mapping**（映射）都有其类型（不同于**document**（文档）的**type**（类型）），表明该属性能存储成改类型的数据，例如 `integer`, `string`, `object。**mapping**（映射）也允许你定义属性的值是否需要**analyzed**（分词）。`

##### index （索引）

**index**（索引）类似于关系型数据库中的表。它有一个**mapping**（映射）来定义索引中的**fields**（属性），这些属性被分组成多种**type**（类型）。索引是一个逻辑命名空间，它对应一到多个**primary** **shards**（主分片）和零到多个**replica shards**（副本分片）。

##### mapping （映射）

**mapping**（映射）类似于关系型数据库中的元数据定义。每一个**index**（索引）对应一个**mapping**（映射），它定义了**index**（索引）中的每一个**type**（类型），另外还有一些索引级别的设置。**mapping**（映射）可以显式定义，或者当一个文档进行索引时自动生成。

##### node （节点）

**node**（节点）是从属于一个**elasticsearch**集群的正在运行的节点。当以测试为目的时，可以在一台主机上启动多个节点，但是通常一台主机最好运行一个节点。在启动时，节点会使用广播的方式，自动感知（网络中）具有相同集群名的集群，并尝试加入它。

##### primary shard （主分片）

每个文档存储在单**primary shard** （主分片）中。当索引一个文档时，它会首先被索引到主分片上，然后索引到主分片的所有副本上。默认情况下，一个**index**（索引）有5个**primary shard** （主分片）。根据**index**（索引）的处理能力，你可以指定更少或者更多的**primary shard** （主分片）来扩展文档数量。当**index**（索引）创建之后，**primary shard** （主分片）的数量不可更改。查询**routing**（路由）获取更多信息。

##### replica shard （副本分片）

每一个**primary shard** （主分片）拥有零到多个副本。副本是**primary shard** （主分片）的拷贝，它的存在有两个目的：

1.  增加容错：当主分片失败时，一个**replica shard**（副本分片）可以提升为**primary shard** （主分片）
2.  提升性能：**primary shard** （主分片）和**replica shard**（副本分片）都能处理**get**和**shearch**请求。默认情况下，每个**primary shard** （主分片）有一个副本，副本的个数可以动态的修改。**replica shard**（副本分片）不会和**primary shard** （主分片）分配在同一个节点上。

##### routing （路由）

   当你索引一个文档时，它会被存储在一个单独的主分片上。通过对routing值进行哈希计算来决定具体是哪一个主分片。默认情况下，routing值是来自于文档ID，如果文档指定了一个父文档，则通过其父文档ID（保证父子文档存储在同一个分片上）。如果你不想使用默认的文档ID来作为routing值,你可以在索引时直接指定一个routing值，或者在mapping中指定一个字段的值来作为routing值。

##### shard （分片）

**shard**（分片）是一个**Lucene**实例。它是由**elasticsearch**管理的低层次的工作单元。**index**（索引）是指向 主分片和副本分片的逻辑命名空间。除了定义**index**（索引）应该具有的**primary** **shard**（主分片）和**replica shard**（副本分片）的数量之外，你不需要对**shard**（分片）作其它的工作。相反，你的代码应该只处理**index**（索引）。**elasticsearch**将**shards**（分片）分配到整个集群的所有节点上，当节点失败时可以自动将分片迁移到其他节点或者新增的节点上。

##### source field （源属性）

在默认情况下，你索引的**json** **document**（文档）会存储在_source **field**（属性）中，**get**和**search**请求会返回该**field**（属性）。这样可以直接在搜索结果中获取原始文档对象，不需要通过**ID**再检索一次文档对象。

##### term （词条）

**term**（词条）是**elasticsearch**中被索引的确切值。`foo`, `Foo`, `FOO 这些**term**（词条）不相等。**term**（词条）可以通过词条搜索来检索。查询**text**（文本）和**anaylsis**（分词）获取更多信息。`

##### text （文本）

**text**（文本）（或者说全文）是普通的非结构化文本，如一个段落。默认情况下，**text**（文本）会被**analyzed**（分词）成**term**（词条），term（词条）是实际存储在索引中的内容。文本的**field**（属性）必须在索引时完成**analyzed**（分词）来支持全文检索的功能，全文检索使用的关键词也必须在搜索时**analyzed**（分词）成索引时产生的相同**term**（词条）。查询**term**（词条）和**analysis**（分词）获取更多信息。

##### type （类型）

**type**（类型）代表文档的类型，如一封邮件，一个用户，一条推文。搜索API可以通过文档类型来过滤。**index**（索引）可以包涵多个类型，每一个**type**（类型）有一系列的**fields**（属性）。同一个**index**（索引）中不同**type**（类型）的同名**fields**（属性）必须使用相同的**mapping**（映射）（定义文档的属性如何索引以及是文档能被搜索）。