【发布时间】: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