Elasticsearch

ELK:

Elasticsearch 搜索

Logstash 日志

kibana 可视化

 

基于lucene实现的,

lucene数据类型层次可以分为:

Index索引,Segment片段,Document文章(index和search最小单位),field域(包括field name & field value), term(最小单位,分词后的词)

 

倒排索引:

每个文章分词后会包含很多词,根据词为key来索引包含这些词的文章。

索引的文章ID可以压缩,比如增量存储或取余存储(除以65535即2的16次方-1)

term可以进行排序后形成term dictionary,然后term dictionary可以进一步通过hashmap生成index,比如A前缀的在一个。

或者用FST来存储term字典,FST在范围、前缀搜索、压缩率性能高。

skiplist跳表快速查找docid

联合查找在FST找到倒排链后,根据倒排链,先取第一个的一个值,在从第二个找此值,在第三个找,都有了就记录一个,没有则跳过此值

 

Elastic防止脑裂:

设置最小节点个数。

比如只有两个节点,当之间通信中断时,从节点会认为主节点不可用了,这样就会导致有双主节点不一致,就是脑裂。

如果设置最小节点个数为2,当有两个节点通信中断,服务直接出问题会被感知到。但是有3个节点时服务依然可用。

 

Elasticsearch搜索:

Query then fetch/

请求通过节点发送给所有分片,然后每个分片查询最相似字典把ID+ 分值传回node,搜索会查询filesystem cache的。

然后在node根据所有传回全局排序在传给对应shard,多个get请求数据。

 

Elasticsearch索引:

协调节点node通过hash字典ID+shard数来找到对应分片,

分片接到请求会同时给memory cache & trans log 写一份, memory cache默认1s会写道filesystem, filesystem写到磁盘或半小时translog会清一遍。

 

优化:

使用SSD,热数据存储SSD,冷数据压缩磁盘

集群都在一个机房

把内存少于一半给lucene

检索批量请求

 

如何监控集群状态?

Marvel可以简单通过Kibana监控集群状态

 

更新删除文档:

删除时候.del文件会对文档标记删除,检索还会检索到,只是结果被过滤。

更新时候旧版本在.del被标记删除,新版本生成新ID,同样被删除能被检索会被过滤。

 

 

Elasticsearchç´¢å¼ææ¡£çè¿ç¨

Elasticsearchæ§è¡æç´¢çè¿ç¨

 

 

 

 

 

 

 

 

 

 

 

 

Logstash:

三部分:数据采集、数据解析/转换,数据输出

解析:

利用grok从非结构化数据中派生出结构;

从IP地址中破译出地理坐标

将PII数据匿名化,去敏感信息

input --- codec --- event --- queue --- batcher --- filter --- output

 

queue分类:

in memory:

宕机时候会造成数据丢失

persistent queue in disk:

不会丢失,保证数据至少被消费一次,在从input 到PQ时候,PQ把数据备份在disk,然后PQ响应已经收到数据;

数据从PQ到达下一个处理单元如filter/output时候,返回ACK到PQ,PQ收到后删除磁盘备份数据,

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值