开发者社区> 问答> 正文

浅析ElasticSearch原理

驻云科技 2018-02-22 16:01:46 3071

女主宣言
最近女主在项目中使用到ElasticSearch来做索引。但是对ElasticSearch的一些原理还是比较模糊,所以就梳理了一下ElasticSearch的基本原理,分享给大家。
我们首先从ElasticSearch的启动过程开始,逐步了解其工作原理。

启动过程



搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch;

Coordinating Node


在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。PS:在搜索的时候是会查询Filesystem Cache的,但是有部分数据还在Memory Buffer,所以搜索是近实时的。

Shard


每个分片返回各自优先队列中 所有文档的 ID 和排序值 给协调节点,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。

Coordinating Node


接下来就是 取回阶段,协调节点辨别出哪些文档需要被取回并向相关的分片提交多个 GET 请求。每个分片加载并 丰富 文档,如果有需要的话,接着返回文档给协调节点。一旦所有的文档都被取回了,协调节点返回结果给客户端。

补充:Query Then Fetch的搜索类型在文档相关性打分的时候参考的是本分片的数据,这样在文档数量较少的时候可能不够准确,DFS Query Then Fetch增加了一个预查询的处理,询问Term和Document frequency,这个评分更准确,但是性能会变差。
总结以上主要介绍了ES的工作原理,ES的魅力远不止如此,同时ES的开源特性也使得它社区活跃,版本迭代更新迅速,目前已经更新到6.x版本,如有兴趣可到ES官网了解最新的特性。
索引
分享到
取消 提交回答
全部回答(2)
  • q134149
    2018-03-25 23:08:46
    Re浅析ElasticSearch原理
    www,rshpr,com
    www,myfushun,com
    www,hztv3,com
    0 0
  • 驻云科技
    2018-03-01 16:33:39
    0 0
添加回答
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章
相似问题