Elasticsearch

1.什么是Elasticsearch?

是由Java语言开发的基于Lucene的一款搜索工具,是一种非关系型的文档数据库,在PB级别的数据之下进行秒级查询。
高可用: 提供复制(replica)机制,一个分片可以设置多个复制,使得某台服务器在宕机的情况下,集群仍旧可以照常运行,并会把服务器宕机丢失的数据信息复制恢复到其他可用节点上。
横向可扩展性: 只需要增加一台服务器,做一点儿配置,启动下Elasicsearch进程就可以并入集群。

2.elasticsearch中的mapping是什么

mapping简单来说,就是解决JSON文本内容到field类型映射关系的定义。将时间域视为时间类型,数字视为数字类型,字符串识别为全文或精确值字符串,这个识别的过程,叫做mapping。

3.elasticsearch的数据类型

text:字符串 keyword:关键字
Integer,long,short,byte,double,float等
data 时间类型
boolean:布尔类型

4.ES写入数据的过程

1.客户端发送写数据的请求时,是发往任意一个节点的,这个节点会成为coordinating node协调节点。
2.每一个数据都会有一个id,通过hash判断该数据属于那个shard(片),找到该shard(片)对应的primary shard(主片)的节点,然后对数据进行路由转发,将请求转发给对应的节点。
3.具体接收的primary shard处理请求,然后将数据同步到replica shard(备份片)上,当主片和备份片都保存好数据后,返回客户端响应。

5.ES查询数据的过程

1.客户端发送请求给任意一个节点,这个节点就成为协调节点
2.协调节点将查询请求广播到每一个数据节点,这些数据节点的分片就会处理该查询请求。
3.每一个分片进行数据查询,把符合条件的数据放在一个队列当中,并将这些数据的文档ID,节点信息,分片信息都返回给协调节点。
4.由协调节点将所有的结果进行汇总,并排序。
5.协调节点向包含这些文档的分片发送get请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据整合后返回。

6.match和term有哪些区别

match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。
一般模糊查找的时候,多用match,而精确查找时可以使用term。

7.倒排索引

正排索引:是以文档对象的唯一 ID 作为索引,以文档内容作为记录。
倒排索引:Inverted index,指的是将文档内容中的单词作为索引,将包含该词的文档 ID 作为记录。
在这里插入图片描述
倒排索引:通过分词器将每个文档的内容域拆分成单独的词(我们称它为词条或 Term),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。

倒排索引(Inverted Index):倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。

  • 单词词典(Lexicon):搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。
  • 倒排列表(PostingList):倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。
  • 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件,倒排文件是存储倒排索引的物理文件。
    在这里插入图片描述

8.FTP原理过程

1
在这里插入图片描述
2
在这里插入图片描述
存在一个问题
“wl”是否存在?(实际上不存在,但是在所展现的图中,wl后面也存在output)

9.脑裂

Elasticsearch集群由一个主节点(可以有多个备选主节点)和多个数据节点组成。其中主节点负责创建、删除索引、分配分片、追踪集群中的节点状态等工作,即调度节点,计算压力较轻;数据节点负责数据存储和具体操作,如执行搜索、聚合等任务,计算压力较大。

正常情况下,当主节点无法工作时,会从备选主节点中选举一个出来变成新主节点,原主节点回归后变成备选主节点。但有时因为网络抖动等原因,主节点没能及时响应,集群误以为主节点下线了,选举了一个新主节点,此时一个Elasticsearch集群中有了两个主节点,其他节点不知道该听谁的调度,这时就发生了"脑裂"现象,通俗点就是“精神分裂”。

原因
1)网络抖动。
由于是内网通信、网络通信等问题造成部分节点认为master node挂掉, 然后另选master node的情况可能性较小;可以通过检查Ganglia集群监控,没有发现异常的内网流量, 故此原因可以排除。
而外网的网络出现问题的可能性更大,更有可能造成“脑裂”现象。

(2)节点负载。
如果主节点同时承担数据节点的工作,可能会因为工作负载大而导致对应的Elasticsearch实例停止响应。此外,由于数据节点上的Elasticsearch进程占用的内存较大, 较大规模的内存回收操作(GC)也能造成Elasticsearch进程失去响应。所以,该原因出现“脑裂”现象的可能性更大。
解决方案

  • 不要把主节点同时设为数据节点
  • 将节点响应超时discovery.zen.ping_timeout稍稍设置长一些(默认是3秒)。默认情况下, 一个节点会认为, 如果master节点在 3 秒之内没有应答, 那么这个节点就是挂掉了, 而增加这个值, 会增加节点等待响应的时间, 从一定程度上会减少误判
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值