首页 > 解决方案 > Elasticsearch/Kibana 中的递归查询

问题描述

我有分层的 Elasticsearch 数据,我将其“标准化”为以下映射的文档:

_id | custom_id | parent_id | text | value

_id自动生成的 Elasticsearch id在哪里,custom_id是我分配的唯一整数,parent_id用作外键,custom_id当当前文档是被引用文档的子文档时,引用文档。两个文档的示例可能如下所示:

abc | 1 | -1 | foo | 123
def | 2 | 1 | bar | 456

每个文档都只有一个(任何parent_id> 0)或没有(parent_id= -1)个父级。嵌套可以变得任意深,但始终是有界的,并且很可能会有多个顶级父级。

我的目标是查询数据以获得两个答案:

Elasticsearchjoin数据类型不适用,因为在我的情况下,单个文档可以同时充当父级和子级。nested数据类型不允许这种搜索。

明确一点,我想在 Kibana 中返回查询结果。编写一个一次返回一个文档的脚本,递归地遍历文档parent_id当然是可能的。我需要什么才能在 Kibana 中完成这项工作并在“发现”页面或可视化中呈现结果(我认为数据表很合适)?

标签: elasticsearchkibana

解决方案


这是您在使用基于文档的数据库(弹性、mongo 等)时需要以不同方式解决的问题。elasticsearch中没有先验或递归连接...

但是在 mongo db 文档中有一个很好的文档来解决这个问题的最常见的解决方案,但是它们很容易适应弹性搜索。他们都有优点和缺点。在我的过去,基于“嵌套集”或“物化路径”的解决方案非常适用于基于链接或树的结构。

https://docs.mongodb.com/manual/applications/data-models-tree-structures/

玩得开心!


推荐阅读