elasticsearch Elasticsearch/Kibana中的递归查询,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch Elasticsearch/Kibana中的递归查询,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch Elasticsearch/Kibana中的递归查询

elasticsearch Elasticsearch/Kibana中的递归查询,elasticsearch,kibana,elasticsearch,Kibana,我有分层Elasticsearch数据,我将其“规范化”为以下映射的文档: _id | custom_id | parent_id | text | value 其中,\u id是自动生成的Elasticsearch id,custom\u id是我分配的唯一整数,parent\u id充当外键,当当前文档是被引用文档的子文档时,引用文档的custom\u id。两个文档的示例如下所示: abc | 1 | -1 | foo | 123 def | 2 | 1 | bar | 456 每个文

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

_id | custom_id | parent_id | text | value
其中,
\u id
是自动生成的Elasticsearch id,
custom\u id
是我分配的唯一整数,
parent\u id
充当外键,当当前文档是被引用文档的子文档时,引用文档的
custom\u id
。两个文档的示例如下所示:

abc | 1 | -1 | foo | 123
def | 2 | 1 | bar | 456
每个文档只有一个(任意
父id
>0)或没有(
父id
=-1)父id。嵌套可以变得任意深,但总是有界的,并且很可能有多个顶级父级

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

  • 给定一个
    自定义\u id
    ,本文档的所有家长(直接家长、祖父母等)都是什么

  • 给定任何查询结果,应用仅与给定
    自定义\u id
    的子项(其本身不必是原始查询结果的一部分)匹配的筛选器

Elasticsearch
join
datatype不适用,因为在我的例子中,单个文档可以同时充当父文档和子文档。嵌套的数据类型不允许这种搜索


为了清楚起见,我想用Kibana返回查询结果。编写一个每次返回一个文档的脚本,递归地遍历父id当然是可能的。在Kibana中完成这项工作并在发现页面或可视化(我认为数据表非常适合)中显示结果需要我做些什么?

在使用基于文档的数据库(elastic、mongo等)时,您需要以不同的方式解决这一问题。在elasticsearch中没有通过优先级或递归进行连接

但是在mongo db文档中有一个很好的文档介绍了这个问题的最常见解决方案,但是它们很容易适应elasticsearch。它们都有好的方面和坏的方面。在我的过去,基于“嵌套集”或“物化路径”的解决方案对于基于链接或树的结构非常有效


玩得开心

在使用基于文档的数据库(elastic、mongo等)时,需要以不同的方式解决这一问题。在elasticsearch中没有通过优先级或递归进行连接

但是在mongo db文档中有一个很好的文档介绍了这个问题的最常见解决方案,但是它们很容易适应elasticsearch。它们都有好的方面和坏的方面。在我的过去,基于“嵌套集”或“物化路径”的解决方案对于基于链接或树的结构非常有效

玩得开心