ElasticSearch实战-BKD-Tree 多维空间树算法(范围查询算法)

Posted 张志翔ۤ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch实战-BKD-Tree 多维空间树算法(范围查询算法)相关的知识,希望对你有一定的参考价值。

        Bkd-Tree作为一种基于K-D-B-tree的索引结构,用来对多维度的点数据(multi-dimensional point data)集进行索引。Bkd-Tree跟K-D-B-tree的理论部分在本篇文章中不详细介绍。

        一句话概括整个流程的话就是:根据某一个维度将点数据集划分为两部分,递归式将两部分的点数据子集进行划分,最终生成一个满二叉树

        Lucene 7.5.0版本源码中当一个节点中的点数据个数大于1024才会进行切分,为了能简单示例,例子中假设一个节点中的点数据个数大于2个才会进行切分,并且点数据的维度为2。

        点数据集,图示如下:

        上图中一共有8个点数据,每个点数据有两个维度。为了描述方便,下面统称为x维度,跟y维度。

        处理节点1

  • 是否要切分:初始的数据集作为第一个节点,即节点1开始进行切分,该节点中有8个数据,大于节点切分的条件值2,所以需要切分。
  • 选出切分维度:x维度的最大值跟最小值的差值为7 ,而y维度的最大值跟最小值的差值为9,所以当前节点的切分维度为y维度。<

以上是关于ElasticSearch实战-BKD-Tree 多维空间树算法(范围查询算法)的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 7.X 进阶实战视频课上线

Elasticsearch 7.X 进阶实战视频课上线

Elasticsearch 7.X 进阶实战视频课上线

ElasticSearch实战(五十)-让Elasticsearch飞起来!百亿级数据存储与查询优化实战!!!

Elasticsearch 学习+SpringBoot实战教程

ElasticSearch实战(五十)-让Elasticsearch飞起来!百亿级数据存储与查询优化实战!!!