Tagged: 查询执行

0

ElasticSearch基础之分布式查询的执行

我们在之前的《ElasticSearch基础之分布式存储》中详细介绍了ElasticSearch是如何进行分布式的读写(CRUD)。那我们在发送查找请求之后,ElasticSearch是如何进行分布式执行的呢?它其实要比我们前面提到的CRUD操作复杂一些,本文就来详细介绍一下这一方面的知识。 前面的CRUD操作其实只是针对某一个shard的,也就是说我们其实是知道我们的操作最终会指向哪一个shard的, 而search相对来说复杂的地方就在于我们根本不知道要查找的内容是存储在哪一个shard上,这就必然导致我们需要去访问每一个shard,或者说至少是我们感兴趣的shard。然后访问不同(所有)shard得到的数据其实只完成了一部分的工作,你还需要把各个shard返回的内容进行整合,排序或者筛选出最终返回给用户的那一部分数据并把它们从各个shard提取出来。因此我们可以简单认为search其实包含了两个部分的操作,一个是查询一个是提取。 查询 查询过程其实说白了也很简单,它在开始的时候会把你的query发送到index上所有的shard(有可能是primary也可能是replica的shard),然后在各个shard上执行查询,并根据相匹配的文档生成一个priority...