Elasticsearch学习篇第二章:Elasticsearch的组成部分和原理简述

部分原理图

1.索引分片 的备份,同一个数据分片不会存在同一个节点上

2.数据写入原理,包含“近实时索引”和“持久化变更”两步

3.结构与mysql的比较

核心组成/介绍

1.shard 索引分片,包含主分片(primary)、索引副本(Replicas)

将数据划分为较小的分片,达到负载、容错、高并发、高可用的目的

2.**metadata **元数据,包含三个部分(_index、_type、_id)

_index:文档存储的地方,类似于关系型数据库里的“数据库”
_type:对象的类,他们数据结构相同
_id:文档的唯一标识
_source: 字段存储代表文档体的JSON字符串

3.倒排索引 正排索引(根据key查找value),倒排索引(根据value查找key,其中value是是经过分词处理)

4.Tokenizer 分词器,将字符流拆分成单个token (通常是单个单词),并输出一个token流

5.routing****路由,默认是_id,可以自定义,通过固定计算公式查找分片

// 路由出单个shard -- 容易造成负载不均衡
shard_num = hash(_routing) % num_primary_shards
// 路由出一组shard 
shard_num = (hash(_routing) + hash(_id) % routing_partition_size) % num_primary_shards    
// 组成部分
num_primary_shards    主分片数量
routing_partition_size 路由出shard的数量

6.脑裂现象 集群中选举出多个Master节点,使得数据更新时出现不一致

# 原因
网络问题:网络延迟导致一些节点访问不到master,认为master挂掉了从而选举出新的master,并对master上的分片和副本标红,分配新的主分片
节点负载:访问量较大时可能会导致ES停止响应(假死状态)造成大面积延迟,此时其他节点得不到主节点的响应认为主节点挂掉了,会重新选取主节点
内存回收:当data节点上的ES进程占用的内存较大,引发JVM的大规模内存回收,造成ES进程失去响应
# 解决方法
1.discovery.zen.ping_timeout:设置节点状态的响应时间
2.discovery.zen.minimum_master_nodes:主节点资格并互相连接的节点的最小数
3.候选主节点和数据节点进行角色分离,减少对主节点“已死”的误判

7.master选举

1.对所有可以成为master的节点(node.master: true)根据nodeId字典排序,
每次选举每个节点都把自己所知道节点排一次序,
然后选出第一个(第0位)节点,暂且认为它是master节点
2.某个节点的投票数达到一定的值(可以成为master节点数n/2+1)并且该节点自己也选举自己,那这个节点就是master。
否则重新选举一直到满足上述条件

8.上图2中refresh/flush过程 -- 近实时搜索

# 请求步骤1
根据routing路由选择某一个节点后
# 步骤2 refresh步骤
es将请求的数据写入到内存缓冲区(Momery Buffer)
默认每过1秒就会将内存缓冲区写入文件系统缓冲区(Filesystem Cache)
清空内存缓冲区
# 步骤3 flush步骤
在写入内存缓冲区的同时写入到translog文件中
默认每过30分钟会translog写入到磁盘中
删除旧的translog,新建新的translog

9.文档删除和修改

1.es的文档是不可变的
2.文档删除其实都是假删除,文档修改是新建新的文档
3.es中.del文件会标记删除文档/旧文档
4.搜索时会将删除/旧文档都查询出来,结果会被.del里面的文件过滤掉
5.合并 段(segement) 时,不会将删除/旧文档写入新段中

10.上述段(segement)的补充

Lucene索引是由多个段组成
段本身是一个功能齐全的倒排索引
搜索请求而言,索引中的所有段都会被搜索

11.怎么保证读写一致

1.通过版本号来使用乐观锁并发控制
2.写入时:一致性级别支持quorum(默认)/one/all,默认大部分可用时才运行写操作
  int(  (primary  +  number_of_replicas)  /  2  )  +  1
  number_of_replicas:复制分片的数量
3.读取时:同步--主分片和副本分片都完成后才会返回
  异步:设置搜索请求参数_preference为primary来查询主分片

简单配置

elasticsearch.yml

cluster.name: es_online_cluster
node.name: ${HOSTNAME}
# 节点是否存储数据
node.data: true
# 节点是否具有成为主节点的资格
node.master: true
path.data: /data/elasticsearch/es_data
path.logs: /data/elasticsearch/es_logs
bootstrap.memory_lock: true
network.host: 10.81.90.235
# 配置有机会参与选举为master的节点
discovery.zen.ping.unicast.hosts: ["10.81.90.235:9300", "10.81.160.31:9300", "10.81.71.23:9300"]
#设置这个集群,有多少个节点有master候选资格,如果集群较大官方建议为2-4个
discovery.zen.minimum_master_nodes
# 设置是否可以通过正则或者_all删除或者关闭索引库,默认true表示必须需要显式指定索引库名称
action.destructive_requires_name: true

后台启动命令

/usr/local/elasticsearch-6.3.2/bin/elasticsearch -d

下篇讲elasticsearch的java应用

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