【发布时间】:2019-06-14 04:49:49
【问题描述】:
我有分层的 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)父级。嵌套可以任意深,但始终是有界的,并且很可能会有多个顶级父级。
我的目标是查询数据以获得两个答案:
给定
custom_id,该文档的所有父母(直接父母、祖父母……)是什么?给定任何查询结果,应用一个过滤器,只有给定
custom_id(它本身不必是原始查询结果的一部分)的子代匹配。
Elasticsearch join 数据类型不适用,因为在我的情况下,单个文档可以同时充当父文档和子文档。 nested 数据类型不允许这种搜索。
明确一点,我想在 Kibana 中返回查询结果。编写一个一次返回一个文档的脚本,递归地遍历parent_id 当然是可能的。我需要什么才能在 Kibana 中完成这项工作并在“发现”页面或可视化中呈现结果(我认为数据表很合适)?
【问题讨论】:
标签: elasticsearch kibana