Kibana:在 table 可视化中加入两个文档

Kibana: joining two documents in table visualization

我有一个数据 table 可视化显示文档中具有电子邮件地址和 ID 的字段:

timestamp |         email       |  field_id
 Feb 5th       jdoe@gmail.com       xyz123

这些字段属于同一个弹性文档。但是,我还有其他文档包含与此唯一 ID 相关的额外信息,并且可以将它们显示为它们自己的 table:

timestamp |  field_id   |    key1   |   key2   |  key3
  Feb 6th     xyz123         val1       val2      val3

您可以看到第一个 table 中的行和第二个 table 中的行具有共同的 field_id。我想知道的是是否可以使用 Kibana and/or 弹性查询显示合并行:

 field_id   |     email      |    key1   |   key2   |  key3
   xyz123     jdoe@gmail.com      val1       val2      val3

这在某种程度上相当于 SQL 中关系数据库的连接。如果这在 Kibana 中是不可能的,也许有一种方法可以通过使用带有弹性的 json 输入的查询间接实现这一点,并执行一种应用程序端连接?

您似乎在尝试将您的关系数据库知识用于非SQL 数据库,例如 Elasticsearch (ES)。您有多种选择。

选项#1。将您拥有的所有信息保存到同一个文档中。如果您在初始文档被索引后获得更多数据,只需使用额外的键更新它。如果不同的文档有不同的模式(又名键集),这对 ES 来说不是问题。另外,在查询ES时,如果担心ES的requests/responses的大小,可以指定要检索哪些字段。

选项#2。您可以对不同的 id/email 文档和 id/keys 文档使用不同的 types,但请将它们存储在相同的 index 中。然后,您可以创建一个仪表板并放置几个可视化效果: a) 具有选择 id 能力的数据 Table; b) 显示所有 email 的电子邮件可视化(一旦您在可视化 a 中 select 一个 id)通过单击它,您的 Kibana 将立即向您显示文档的电子邮件给定的 id c) 显示所有 keys 的按键可视化(同样,一旦您 select 一个 id 或一个 email,此可视化将更新为仅显示与 select离子)

选项#3。同上,但您可以使用不同的 indices 而不是不同的 types。只要这些索引有一个共同的前缀(例如 docs-emaildocs-keys),您就可以在 kibana 中使用它们的前缀从不同的索引中检索数据

选项#4。如您在问题中所述,应用程序级连接。 ES 为其存储的所有数据提供 REST API。你总是可以从中检索你需要的任何东西并构建客户端连接(这让人想知道为什么你选择 ES 作为存储数据的后端而不是关系数据库)