郑州网站建设找三牛,网站运营模式,微软优化大师,网站建设可以先备案嘛大数据面试题之Elasticsearch:每日三题 1.Elasticsearch索引文档的流程#xff1f;2.Elasticsearch更新和删除文档的流程#xff1f;3.Elasticsearch搜索的流程#xff1f; 1.Elasticsearch索引文档的流程#xff1f; 协调节点默认使用文档ID参与计算(也支持通过routing)2.Elasticsearch更新和删除文档的流程3.Elasticsearch搜索的流程 1.Elasticsearch索引文档的流程 协调节点默认使用文档ID参与计算(也支持通过routing)以便为路由提供适合的分片shardhash(document_id)%(num_of_primary_shards)当分片所在的节点接收到来自协调节点的请求后会将请求写到Memory Buffer然后定时默认是每隔1秒写入到Filesystem Cache这个从Memory Buffer到Filesystem Cache的过程就叫做refresh当然在某些情况下存在Momery Buffer和Filesystem Cache的数据可能会丢失ES是通过translog的机制来保证数据的可靠性的。其实现机制是接收到请求后同时也会写入到translog中当Filesystem cache中的数据写入到磁盘中时才会清除掉这个过程叫做flush在flush过程中内存中的缓冲将会被清除内容被写入一个新段段的fsync将创建一个新的提交点并将内容刷新到磁盘旧的translog将被删除并开始一个新的translog。flush触发的时机是定时触发(默认30分钟)或者translog变得太大(默认为512M)时 
2.Elasticsearch更新和删除文档的流程 
删除和更新也都是写操作但是Elasticsearch中的文档是不可变的因此不能被删除或者改动以展示其变更磁盘上的每个段都有一个相应的.del文件。当删除请求发送后文档并没有真的被删除而是在.del文件中被标记为删除。该文档依然能匹配查询但是会在结果中被过滤掉。当断合并时在.del文件中被标记为删除的文档将不会被写入新段。在新的文档被创建时Elasticsearch会为该文档指定一个版本号当执行更新时旧版本的文档在.del文件中被标记为删除新版本的文档被索引到一个新段。旧版本的文档依然能匹配查询但是会在结果中被过滤掉 
3.Elasticsearch搜索的流程 搜索被执行成一个二阶段过程我们称之为Query Then Fetch在初始查询阶段时查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。每个分片在本地执行搜索并构建一个匹配文档的大小为fromsize的优先队列。ps在搜索的时候是会查询Filesystem Cache的但是有部分数据还在Memory Buffer所以搜索是近实时的。每个分片返回各自优先队列中所有文档的ID和排序值给协调节点它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。接下来就是取回阶段协调节点辨别出哪些文档需要被取回并向相关的分片提交多个GET请求。每个分片加载并丰富文档如果有需要的话接着返回文档给协调节点。一旦所有的文档都被取回了协调节点返回结果给客户端。Query Then Fetch 的搜索类型在文档相关性打分的时候参考的是本分片的数据这样在文档数量较少的时候可能不够准确DFS Query Then Fetch 增加了一个预查询的处理询问Term和Document frequency这个评分更准确但是性能会变差。