【问题标题】:Elasticsearch / Kibana: Application-side joinsElasticsearch / Kibana:应用程序端连接
【发布时间】:2014-11-12 07:23:54
【问题描述】:

是否可以使用 Kibana(最好是闪亮的新版本 4 beta)来执行应用程序端连接?

我知道 ES / Kibana 不是为了取代关系数据库而构建的,通常对我的数据进行非规范化是一个更好的主意。然而,在这个用例中,这不是最好的方法,因为索引大小正在爆炸式增长并且性能正在下降:

我正在索引数十亿个包含网络流会话信息的文档,如下所示:源 ip、源端口、目标 ip、目标端口、时间戳。

现在我还想收集每个 IP 地址的附加信息,例如地理位置、asn、反向 dns 等。将这些信息添加到每个会话文档会使整个数据库变得难以管理:有数百万个文档具有相同的 IP 地址并且将相同的附加信息添加到所有这些文档的冗余会导致大量膨胀和无响应的用户体验,即使在具有数百 GB 内存的集群上也是如此。

相反,我想创建一个单独的索引,其中仅包含唯一的 IP 地址和我为每个地址收集的元数据。

问题是:我如何仍然使用 kibana 分析我的数据?对于查询返回的每个文档,kibana 应该在 ip-index 中执行查找,并使用此信息“虚拟丰富”每个 ip 地址。像添加虚拟字段这样结构看起来像这样(动态):

来源ip,来源端口,来源国家,来源asn,来源fqdn

我知道这会以多次查询为代价。

【问题讨论】:

  • 出于好奇,您是否将 doc_values 用于未分析的字段缓存?就个人而言,在我什至尝试规范化我的数据之前,我会尝试切换到 doc_values 以查看是否有帮助。您可能还想查看 int 全局序数(例如 elastic.co/guide/en/elasticsearch/reference/1.6/…),但对于高基数数据,我实际上认为这不是一个好主意....

标签: join elasticsearch kibana


【解决方案1】:

我不认为有这样的事情,但也许你可以玩一下过滤器:

  1. 您可以创建漂亮而简单的数据可视化 不同的类型,只显示一个简单的数据。
  2. 您将这些不同的可视化效果放在仪表板中,以便显示与某种联接类型关联的所有数据。
  3. 您使用过滤器作为您的加入键并使用完整的仪表板, 由不同的面板组成,以了解特定的连接键 (您的情况下的 ips 或会话)

您需要为每种类型的连接创建 1 个仪表板。

请注意,您需要协调不同文档中字段的名称和映射!

让我们更新,这是一个有趣的问题,我现在想知道这么多文件的结果。

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2017-03-09
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多