阿里云
发表主题 回复主题
  • 751阅读
  • 2回复

[干货分享]浅析ElasticSearch原理

级别: 码农
发帖
128
云币
331
#*!$!c{  
女主宣言 4i,SiFKB  
最近女主在项目中使用到ElasticSearch来做索引。但是对ElasticSearch的一些原理还是比较模糊,所以就梳理了一下ElasticSearch的基本原理,分享给大家。 .N=hA  
我们首先从ElasticSearch的启动过程开始,逐步了解其工作原理。 mV,R0olF  
akQH+j  
启动过程 _ ^{Ep/ME=  
N-gRfra+8L  
!qlGt)G3  
4*x!B![]y  
搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch; A ? M]5d  
E0Q"qEvU  
Coordinating Node ^{:jY, ?]  
c~xo@[NaS  
G+uiZ (p>  
在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的优先队列。PS:在搜索的时候是会查询Filesystem Cache的,但是有部分数据还在Memory Buffer,所以搜索是近实时的。 v=tj.Vg  
:eW~nI.Vc  
Shard iIaT1i4t.  
H@E" )@92  
o^Ysp&#p  
每个分片返回各优先队列中 所有文档的 ID 和排序值 给协调节点,它合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。 /;AZ/Ocy!  
]TgP!M&q  
Coordinating Node 9K':Fn2,  
"F$o!Vk  
&_d/ciq1f  
接下来就是 取回阶段,协调节点辨别出哪些文档需要被取回并向相关的分片提交多个 GET 请求。每个分片加载并 丰富 文档,如果有需要的话,接着返回文档给协调节点。一旦所有的文档都被取回了,协调节点返回结果给客户端。
k0_$M{@Y  
补充:Query Then Fetch的搜索类型在文档相关性打分的时候参考的是本分片的数据,这样在文档数量较少的时候可能不够准确,DFS Query Then Fetch增加了一个预查询的处理,询问Term和Document frequency,这个评分更准确,但是性能会变差。
总结以上主要介绍了ES的工作原理,ES的魅力远不止如此,同时ES的开源特性也使得它社区活跃,版本迭代更新迅速,目前已经更新到6.x版本,如有兴趣可到ES官网了解最新的特性。
级别: 码农
发帖
128
云币
331
只看该作者 沙发  发表于: 03-01
级别: 禁止发言
发帖
13
云币
11
只看该作者 板凳  发表于: 03-25
用户被禁言,该主题自动屏蔽!
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个