首页 > 解决方案 > 从elasticsearch查询动态分层数据

问题描述

我在 elasticsearch 中有一个索引,其中包含格式类似于以下的文档:

{id:base}
{id:a parent:base}
{id:b parent:a}
{id:c parent:a}
{id:d parent:someotherbase}

简而言之 - 每个文档都有一个 id 和一个父级,一个文档可以有多个“子级”并且只有一个父级。
我想检索这些文档(基于顶部的“基础”文档 ID)并将其转换为树结构,例如:

{id:base, children :[
   {id:a , children:[{id:b},{id:c}]},
   {...}
 ]}

有没有办法构建一个查询,只返回与单个“树”相关的文档(让我实现实际的树结构构建?
有没有办法使用本机弹性搜索支持快速构建这种结构?

标签: elasticsearch

解决方案


最好的办法是在存储到 elasticsearch 之前对数据进行非规范化处理。

IE。

{ node:base }
{ node:base/a}
{ node:base/a/b }

然后使用路径层次标记器。这将有助于查询文档。


推荐阅读