Glossary of terms (词汇表)
analysis(分析)
cluster (集群)
document (文档)
id
field(属性)
index (索引)
mapping (映射)
node (节点)
primary shard (主分片)
replica shard (副本分片)
routing (路由)
shard (分片)
source field (源属性)
term (词条)
text (文本)
type (类型)
analysis(分析)
Analysis(分析)是将full text(全文)转化为terms(词条)的过程。使用不同的 analyzer(分词器),FOO BAR,Foo-Bar,foo,bar这些短语可能都会生成foo和bar两个词条,实际的index(索引)里面存储的就是这些terms(词条)。针对FoO:bAR的full text query(全文检索),会先将其分析成为foo,bar这样的词条,然后匹配存储在index(索引)中的term(词条)。正是这个analysis(分析)的过程(发生在索引和搜索时)使得elasticsearch能够执行full text queries(全文检索)。也可以参阅
text
(文本)和
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(类型)。索引是一个逻辑命名空间,它对应一到多个primaryshards(主分片)和零到多个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(主分片)的拷贝,它的存在有两个目的:
增加容错:当主分片失败时,一个
replica shard
(副本分片)可以提升为
primary shard
(主分片)
提升性能:
primary shard
(主分片)和
replica shard
(副本分片)都能处理
get
和
shearch
请求。默认情况下,每个
primary shard
(主分片)有一个副本,副本的个数可以动态的修改。
replica shard
(副本分片)不会和
primary shard
(主分片)分配在同一个节点上。
routing (路由)
index(索引)一个document(文档)时,它会存储在一个primary shard(主分片)上。通过对routing(路由)值作哈希来决定具体是哪一个主分片。默认情况下,routing(路由)值是由document(文档)ID派生的,如果document(文档)指定了父document(文档),则通过其父document(文档)的ID派生(保证父子文档存储在同一个分片上)。routing(路由)值可以在索引时直接指定,或者在mapping(映射)中指定一个routing field(路由属性)。
shard (分片)
shard(分片)是一个Lucene实例。它是由elasticsearch管理的低层次的工作单元。index(索引)是针对 主分片和副本分片的逻辑命名空间。除了定义index(索引)应该具有的primaryshard(主分片)和replica shard(副本分片)的数量之外,你不需要对shard(分片)作其它的工作。相反,你的代码应该只处理index(索引)。elasticsearch将shards(分片)分配到整个集群的所有节点上,当节点失败时可以自动将分片迁移到其他节点或者新增的节点上。
source field (源属性)
在默认情况下,你索引的jsondocument(文档)会存储在_sourcefield(属性)中,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(映射)(定义文档的属性如何索引以及是文档能被搜索)。
Last updated