elasticsearch Elasticsearch/Kibana中的递归查询
我有分层Elasticsearch数据,我将其“规范化”为以下映射的文档: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 每个文
_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
join
datatype不适用,因为在我的例子中,单个文档可以同时充当父文档和子文档。嵌套的数据类型不允许这种搜索
为了清楚起见,我想用Kibana返回查询结果。编写一个每次返回一个文档的脚本,递归地遍历父id当然是可能的。在Kibana中完成这项工作并在发现页面或可视化(我认为数据表非常适合)中显示结果需要我做些什么?在使用基于文档的数据库(elastic、mongo等)时,您需要以不同的方式解决这一问题。在elasticsearch中没有通过优先级或递归进行连接 但是在mongo db文档中有一个很好的文档介绍了这个问题的最常见解决方案,但是它们很容易适应elasticsearch。它们都有好的方面和坏的方面。在我的过去,基于“嵌套集”或“物化路径”的解决方案对于基于链接或树的结构非常有效
玩得开心 在使用基于文档的数据库(elastic、mongo等)时,需要以不同的方式解决这一问题。在elasticsearch中没有通过优先级或递归进行连接 但是在mongo db文档中有一个很好的文档介绍了这个问题的最常见解决方案,但是它们很容易适应elasticsearch。它们都有好的方面和坏的方面。在我的过去,基于“嵌套集”或“物化路径”的解决方案对于基于链接或树的结构非常有效 玩得开心