我有一个数据表可视化显示来自具有电子邮件地址和 ID 的文档的字段:
timestamp | email | field_id
Feb 5th jdoe@gmail.com xyz123
这些字段属于同一个弹性文档。但是,我还有其他文档包含与此唯一 ID 相关的额外信息,并且可以将这些显示为它们自己的表格:
timestamp | field_id | key1 | key2 | key3
Feb 6th xyz123 val1 val2 val3
您可以看到第一个表中的行和第二个表中的行具有相同的 field_id。我想知道是否可以使用 Kibana 和/或弹性查询显示合并行:
field_id | email | key1 | key2 | key3
xyz123 jdoe@gmail.com val1 val2 val3
这在某种程度上相当于 SQL 中关系数据库的连接。如果这在 Kibana 中是不可能的,也许有一种方法可以通过使用带有弹性的 json 输入的查询间接实现这一点,并执行一种应用程序端连接?
最佳答案
您似乎在尝试将您的关系数据库知识用于 Elasticsearch (ES) 等非 SQL 数据库。您有多种选择。
选项 #1。将您拥有的所有信息保存到同一个文档中。如果您在初始文档被索引后获得更多数据,只需使用额外的键更新它。如果不同的文档有不同的模式(又名键集),这对 ES 来说不是问题。此外,在查询 ES 时,如果您担心 ES 请求/响应的大小,您可以指定要检索哪些字段。
选项#2。您可以为不同的 id/email 文档和 id/keys 文档使用不同的 types
,但要将它们存储在相同的 index
中。然后,您可以创建一个仪表板并放置几个可视化效果:
a) 能够选择id
的数据表;
b) 显示所有 email
的电子邮件可视化(只要您在可视化 a 中选择一个 id
)点击它,您的 Kibana 将立即向您显示一封电子邮件给定 id
的文档
c) 显示所有 keys
的键可视化(同样,只要您选择 id
或 email
,此可视化将更新为仅显示与选择相关的键)
选项#3。同上,但是你可以有不同的 indices
而不是不同的 types
。只要这些索引有一个共同的前缀(例如 docs-email
和 docs-keys
),您就可以在 kibana 中使用它们的前缀从不同的索引中检索数据
选项#4。如您在问题中所述,应用程序级连接。 ES 为其存储的所有数据提供 REST API。你总是可以从中检索你需要的任何东西并构建客户端连接(这让人想知道为什么你选择 ES 作为存储数据的后端而不是关系数据库)
关于elasticsearch - Kibana:在表格可视化中连接两个文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272459/