首页 > 解决方案 > 如何在 Elasticsearch 中最好地创建父子关系

问题描述

我有两个实时流。一个包含新闻文章和关于同一文章的其他评论。我想在每篇文章和文章评论之间创建父子关系,标题除外。没有共同的身份证。我想使用两个流中都存在的标题,并基于每 15 分钟匹配两个流。我假设 15 分钟足以处理两个流之间的延迟。你会怎么做呢?任何想法,将不胜感激。

通过 Logstash 传来的包含 entity_name、source_name、headline 的典型消息如下所示:

“汤森路透公司”、“今日日本”、“特朗普在强迫北约危机谈判后宣称胜利”

一些典型的评论、评论、标题,它们来自 Logstash,但单独的管道如下所示:

“我们为特朗普的主张鼓掌……”,“特朗普在强迫北约危机谈判后声称胜利”

“北约危机很重要......”,“特朗普在强迫北约危机谈判后声称胜利”

具体来说: 1. 保持索引分开或从前两个索引创建第三个索引?2. 如何运行 15 分钟刷新周期?3.如果有更好的方法/工具/数据存储,请指教。

标签: elasticsearchlogstashparent-child

解决方案


您可以通过散列标题在评论和文章之间创建一个公共 id(假设您从未观察到拼写错误)。

  1. 是的,将文章和评论保存在单独的索引中。参考:https ://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html

  2. 需要通过匹配流来详细说明您的意思。不确定是否有办法使用 Elasticsearch Task API 来安排作业......也许可以做一个 cronjob 来做到这一点?您可以浏览文章索引,对标题进行哈希处理,然后在评论索引中查询该哈希。

  3. 看起来你现在有一个可靠的存储方法。


推荐阅读