开发者社区> 问答> 正文

浅析ElasticSearch原理


女主宣言
最近女主在项目中使用到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官网了解最新的特性。

展开
收起
驻云科技 2018-02-22 16:01:46 4479 0
2 条回答
写回答
取消 提交回答
  • Re浅析ElasticSearch原理
    www,rshpr,com
    www,myfushun,com
    www,hztv3,com
    2018-03-25 23:08:46
    赞同 展开评论 打赏
  • 上海驻云信息科技有限公司成立于2013年,是一家领先的企业云计算架构咨询、实施、管理及运维技术服务提供商,致力于为企业客户提供卓越的云计算整体解决方案。
    2018-03-01 16:33:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云Elasticsearch体系架构与特性解析 立即下载
开源与云:Elasticsearch应用剖析 立即下载
《Elasticsearch全观测解决方案》 立即下载