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

时间:2016-02-08 14:49:56

标签: elasticsearch kibana

我有一个数据表可视化,显示来自具有电子邮件地址和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输入和执行一种应用程序端连接的查询间接实现这一点吗?

1 个答案:

答案 0 :(得分:4)

看起来您尝试将关系数据库的知识与没有SQL数据库(如Elasticsearch(ES))结合使用。你有几种选择。

选项#1。将您拥有的所有信息保存到同一文档中。如果在索引初始文档后获得更多数据,则只需使用额外的密钥进行更新。如果不同的文档具有不同的模式(也就是密钥集),则ES不是问题。此外,在查询ES时,如果您担心ES的请求/响应的大小,您可以指定要检索的字段。

选项#2。您可以为不同的ID /电子邮件文档和ID /密钥文档使用不同的types,但请将它们保存在同一index中。然后,您可以创建仪表板并放置几个可视化: a)能够选择id的数据表; b)电子邮件可视化显示所有email(一旦您在可视化中选择id a),点击它,您就会立即向Kibana显示给定{{}的文档的电子邮件1}} c)显示所有id的键可视化(再次,一旦您选择keysid,此可视化将更新为仅显示与选择相关的键)

选项#3。与上述相同,但您可以使用不同的email而不是indices。只要这些索引具有公共前缀(例如typesdocs-email),您就可以在kibana中使用它们的前缀来检索来自不同索引的数据

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