elasticsearch学习日志—es中的一些基本概念

elasticsearch中的一些基本概念

这一部分记录下elasticsearch当中的一些专用的基本概念,首先是es使用当中的文档和索引:

文档(Document):
  • elasticsearch是面向文档的,文档是所有可搜索数据的最小单元,可类比关系型数据库中的一条记录。

  • 文档会被序列化成JSON格式,保存在Elasticsearch中。JSON对象由字段组成,每个字段都有对应的字段类型。elasticsearch可自动推算字段的类型。但在实际使用当中可能会与实际需要存在一些误差,因此在一些情况下需要手动指定字段的类型。

  • 每个文档都有一个 Unique ID, 可自己指定也可由elasticsearch自动生成。


    image.png
  • 元数据,用于标注文档的相关信息,包括:

    • _index : 文档所属的索引名
    • _type :文档所属的类型名
    • _id : 文档唯一id
    • _score : 相关性打分
    • _source : 文档的原始JSON数据
    • _version : 文档的版本信息

索引(index):
image.png
  • 索引是文档的容器,是一类文档的结合,由于type即将废除,那么索引在此可类比关系型数据库中的表。
  • mapping:定义文档的字段类型。
  • setting: 定义不同的数据分布。

其次,由于elasticsearch的分布式特性,因此有一些与分布式相关的名词:

节点(node):
  • 节点是一个es的实例,本质上就是一个java的进程,一台机器上可运行多个实例,但是在生产环节建议一台机器只设置一个。
  • 每个节点都有一个名字,可通过配置文件配置。
  • 每一个节点启动后会分配一个UID,保存在data目录下
  • master node:
    每个节点启动后,默认为 master eligible节点,这种类型的节点可参加选主流程,成为master节点,可以在配置文件中设置 node.master: false来禁止。
    第一个节点启动后会将自己选举为主节点,每个节点上都保存了集群的状态,只有master节点才能修改集群的状态信息。
    集群的状态信息包括:所有的节点信信;所有索引及其相关的setting和mapping信息;分片的路由信息等。
  • data node:
    可以保存数据的节点,叫做data node。负责保存分片数据。在数据扩展上起到了至关重要的作用
  • Coordinating node:
    负责接受Client的请求,将请求发送给合适的节点,最终将数据汇总在一起。
    每个node默认都起到了coordinating node的指责。
    另外还有一些其他节点类型:
  • hot&warm node(冷热节点):
    不同硬件配置的 data node,用来实现 HOT & WARM 架构,降低集群部署成本。
  • machine learning node:
    负责跑机器学习的node, 用来做异常检测。

分片(Primary Shard & Replica Shard)
  • 主分片:用以解决数据水平扩展的问题。通过主分片,可以将数据分布到集群内的所有节点之上。
    • 一个分片是一个运行的lucene实例。
    • 主分片数在创建索引时指定,后续不允许修改,除非reindex。
  • 副本分片:用以解决数据高可用的问题,是主分片的拷贝。
    • 副本分片数可以动态调整。
    • 增加副本数,还可以一定程度上提高服务的可用性。

对于生产环境中分片的设定,需要提前做好容量规划:
分片数过小会导致后续无法增加节点实现水平扩展,同时单个分片的数据量过大会造成数据重新分配耗时的增加。
分片数过大会影响搜索结果的相关性打分,影响统计结果的准确性。单个节点上过多的分片也会导致资源的浪费,同时影响性能。


集群的健康状态:

可通过API命令查看集群健康状态:

###查看集群健康状态
GET _cluster/health
###查看节点信息
GET _cat/nodes
###查看分片信息
GET _cat/shards

green代表主分片与副本分片都正常分配;yellow表示主分片正常,副本分片不正常;red表示有未能分配
另外可通过Cerebro来监控管理elasticsearch集群状态。


其他一些小知识:
倒排索引

elasticsearch采用一种名为倒排索引的结构,适用于快速的全文检索。一个倒排 索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表,如以下例子,对elasticsearch字段进行倒排索引:


image.png

doc id:文档的id。
TF:单词出现的频率。
Position:单词出现的位置。
Offset:单词的开始和结束位置。

elasticsearch当中的分词

那么既然谈到了倒排索引,就需要探讨一下需要对哪些单词进行倒排索引,这就涉及到了分词,举个例子,假设有一个文档:
“小明今天出门没有带雨伞”。
对于其中的一些汉字组合如: 明今,门没,带雨等这类单独组起来没有任何意义的词组,其实是完全没必要为他们创建倒排索引的,因此,我们希望能够有一个合理的分词方式,以减少创建过多的无谓的倒排索引。这里引入几个概念

  • Analysis - 文本分析,是把全部文本转换为一系列单词(term/token)的过程,也就是我们所谓的分词。
  • Analyzer - 分词器,上述的分词的过程是通过分词器来完成的。elasticsearch当中有内置的分词器,也可按需定制分词器。此外,分词器还会作用在查询语句上,对查询语句进行分析。
    分词器由三部分组成:
  • Character Filter:针对原始文本处理,做一些诸如去除html标签的工作。
  • Tokenizer:按照一定的规则将文本切分为单词。
  • Token filter:将处理后的单词进行二次加工,如转化为小写,删除stopwords(一些去掉后对语义影响不大的词或一些在哪里都会出现的词),同义词转换,词干提取等。


    image.png

分词器api,可用来查看对text文本分词后的结果。es内置了一些分词器:

  • standard 标准分词器,按词切分,小写处理。
  • simple 按照非字母切分,小写处理。
  • stop 在simple的基础上,过滤掉stopword。
  • whitespace 按空格切分,不转小写。
  • keyword 不做分词处理,整个输入作为分词结果。
  • pattern 正则表达式分词,默认按 /W+
  • language 提供了一些常用语言的分词器。
    另外对于中文的分词器推荐使用IK和THULAC。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容