23. Glossary of terms(专业术语表)

本贴最后更新于 2566 天前,其中的信息可能已经斗转星移

术语表(Glossary of terms)

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(全文检索)。也可以参阅 textterm 来了解更多细节信息。

cluster (集群)

cluster(集群)是由拥有同一个集群名的一个或者多个节点组成。每个集群拥有一个单独的主节点,它由集群自行选举出来,如果当前主节点(master node)挂了,能被其他节点取代。

document (文档)

一个文档是存储在 elasticsearch 中的 JSON 文档。类似于关系型数据库中的一行记录。每个文档存储在一个 index(索引)中,它拥有一个 type(类型)和一个 id。一个文档是包含零或多个字段或者键值对的 JSON 对象(类似于其他语言中的 hash/hashmap/associative array)。当一个文档被 indexed(索引)的时候,它的原始 JSON 文档数据会被存储成_source 字段中,对该文档进行 get 或者 search 操作时,默认返回的就是该字段(_source)。

id

文档的 ID 标识一个文档。文档的 index/id 必须唯一。如果没有提供 ID,elasticsearch 会自动生成一个 ID。(参考 routing 来获取更多信息)

field(字段)

一个文档包涵一系列的字段或键值对。它的值可以是简单值(标量)(如字符串,整型数,日期),或者是像数组和对象一样的嵌套结构。一个字段类似于关系型数据库中的一列。mapping 中的每个字段都有其类型(不同于文档类型),该字段类型表明该字段能存储成哪种类型的数据,例如 integer, string, object。mapping 也允许你定义字段的值是否需要进行分词处理(analyzed)。

index (索引)

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

mapping (映射)

mapping(映射)类似于关系型数据库中的元数据定义(schema definition )。每一个 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)实际上是指向主分片和副本分片的逻辑命名空间。除了定义一个索引应该具有主分片(的 primary shard)和副本分片(replica shard)的数量之外,你不需要直接引用分片。相反,你的代码应该只处理一个索引。Elasticsearch 将分片分配到整个集群的所有节点上,当节点失败或新增节点时可以自动将分片迁移到其他节点上。

source field (源属性)

在默认情况下,你索引的 JSON 文档会存储在_source 字段中,该字段能够被所有 get 和 search 请求返回。这样允许直接在查询结果中获取原始文档对象,而不需要通过 ID 再检索一次文档对象。

term (词条)

term(词条)是 elasticsearch 中被索引的确切值。foo, Foo, FOO 这些 term(词条)并不等价。Terms(也就是精确值)可以通过 term 查询被搜索到。请参考 textanaylsis 来获取更多信息。

text (文本)

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

type (类型)

type(类型)代表文档的类型,如一封邮件,一个用户,一条推文。多类型已经不推荐使用了,而且已经逐渐开始在准备移除它.请参考: Removal of mapping types

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...