(二)ES基本概念入门1

一、索引

  1. 索引是文档的容器,是一类文档的集合
    • 索引提现了逻辑空间的概念,每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型。
    • Shared体现了物理空间的概念,索引的数据分散在Shared上
  2. 索引的Mapping和Settings
    • Mapping 定义字段的类型
    • Settings 定义不同的数据分布

二、文档(Document)

  1. Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位
    • 日志文件中的日志项;
    • 一部电影的具体信息/一张唱片的详细信息;
    • MP3播放器里的一首歌/一篇PDF文档中的具体内容
  2. 文档会被序列换成JSON格式,保存在Elasticsearch中
    • JSON对象由字段组成
    • 每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)
  3. 每个文档都有一个Unique ID
    • 你可以自己指定ID
    • 或者通过Elasticsearch自动生成


      文档元数据

三、Type

  1. 7.0之前,一个index可以设置多个Types;
  2. 6.0开始,Type已经被Deprecated。7.0开始,一个index只能创建一个type,即"_doc"

四、REST API

  1. Bulk API (批量操作)在一次API调用中,对不同的索引进行操作,支持四种类型操作
    • Index
    • Create
    • Update
    • Delete
      操作中单条操作失败,不会影响其他操作,返回结果包括每条操作的执行结果
  2. mget批量读取
  3. msearch 批量查询

五、节点

节点基本知识

  1. 节点是一个elasticsearch的实例;
    • 本质上是一个JAVA进程
    • 一台机器上可以运行多个elasticsearch实例,生产环境建议一台机器启动一个elasticsearch实例
  2. 每个节点都有名字,通过配置文件配置,或者启动的时候使用 -E node.name=xxx指定;
  3. 每个节点在启动之后,会分配一个UID,保存在data目录下;
  4. 每个节点启动之后就是一个Master eligible nodes(Master eligible可以参加选主流程,成为Master节点);
    • 可以设置node.master: false 禁止
  5. 当第一个节点启动的时候,它会将自己选举成Master节点;
  6. 每个节点都保存了集群的状态,但是只有master节点能够修改集群状态信息(这样做事为了防止集群信息的不一致);
    • 所有的节点信息
    • 所有的index及其相关的Mapping和Settings信息
    • 分片的路由信息

节点类型

  1. Data node
    • 可以保存数据的节点,叫做Data node,用来保存分片数据,在数据扩展上很关键
  2. Coordinating node
    • 负责接受client 的请求,将请求分发到合适的节点上,最终把结果汇聚到一起
    • 每个节点都起到了Coordinating node的职责
  3. Hot &Warm node
    • 不同硬件配置的Data node ,用来实现Hot & Warm架构,降低集群部署成本
  4. Machine Learn node
    • 负责跑机器学习的job,用来做异常检测
  5. Tribe node
    • Tribe node 连接到不同的es集群,并且支持将这些集群当成一个单独的集群处理


      配置节点类型

六、集群及节点颜色状态

ES查询集群健康状态

GET _cluster/health     //查询

//返回数据
{
  "cluster_name" : "myes",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 3,
  "active_shards" : 6,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

ES有3种颜色显示健康状态(status)

  1. Green 主副分片正常分配
  2. Yellow 主分片分配正常,有副分片分配异常
  3. Red 有主分片未能分配(例如当磁盘使用达到85%以上时,创建新的索引)

七、分片

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


      image.png
  2. 分片设定
生产环境,需要提前做好容量规划,7.0开始,默认主分片设置成1,解决了over-sharding的问题
(1)分片数设置过小
- 导致后续无法增加节点实现水平扩展
- 单个分片数据量过大,导致数据重新分配耗时

(2) 分片数设置过大
- 相应搜索结果相关性打分,影像统计结果准确性
- 分片过多,导致资源浪费,同时影像性能

八、倒排索引

先上一张图,大概了解下倒排索引的数据结构


image.png

倒排索引的两个核心组成

  1. 单词词典(Term Directory)
    • 记录所有文档的单词,记录单词到倒序排列表的关联关系,如果单词体量很大,可以使用B+树或者哈希拉链法实现,以提升插入及检索效率
  2. 倒序列表(Posting list)
    • 倒序排列项(posting)
      • 文档ID
      • 词频(单词在文档中出现的次数)
      • 位置(position)单词在文档中的位置
      • 偏移(offset)记录单词开始和结束的位置,实现高亮显示
        参考下面这张图


        image.png
elasticsearch的JSON文档中的每个字段,都有自己的倒排索引
可以设置对某些字段不做索引(节省空间,但是字段无法被检索)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353