elasticsearch - 如何在 Elasticsearch 中最好地创建父子关系
问题描述
我有两个实时流。一个包含新闻文章和关于同一文章的其他评论。我想在每篇文章和文章评论之间创建父子关系,标题除外。没有共同的身份证。我想使用两个流中都存在的标题,并基于每 15 分钟匹配两个流。我假设 15 分钟足以处理两个流之间的延迟。你会怎么做呢?任何想法,将不胜感激。
通过 Logstash 传来的包含 entity_name、source_name、headline 的典型消息如下所示:
“汤森路透公司”、“今日日本”、“特朗普在强迫北约危机谈判后宣称胜利”
一些典型的评论、评论、标题,它们来自 Logstash,但单独的管道如下所示:
“我们为特朗普的主张鼓掌……”,“特朗普在强迫北约危机谈判后声称胜利”
“北约危机很重要......”,“特朗普在强迫北约危机谈判后声称胜利”
具体来说: 1. 保持索引分开或从前两个索引创建第三个索引?2. 如何运行 15 分钟刷新周期?3.如果有更好的方法/工具/数据存储,请指教。
解决方案
您可以通过散列标题在评论和文章之间创建一个公共 id(假设您从未观察到拼写错误)。
是的,将文章和评论保存在单独的索引中。参考:https ://www.elastic.co/guide/en/elasticsearch/reference/current/removal-of-types.html
需要通过匹配流来详细说明您的意思。不确定是否有办法使用 Elasticsearch Task API 来安排作业......也许可以做一个 cronjob 来做到这一点?您可以浏览文章索引,对标题进行哈希处理,然后在评论索引中查询该哈希。
看起来你现在有一个可靠的存储方法。
推荐阅读
- spring - 初始化 SpringBoot 应用程序时出错。我有一个 SpringBoot 应用程序。2.1.5.RELEASE 使用Kakfa
- python - promt之前如何监控孩子的输出?
- airflow - 气流不运行任务
- c++ - memcpy 是否取决于源指针和目标指针的类型?
- android - Gradle 无法使用 OBJECT 库构建 CMake 项目,因为它需要一个输出文件
- typescript - 如何解决 Visual Studio 2019 中“只能使用 'esModuleInterop' 标志默认导入”?
- python - 有没有办法创建一个气泡弹出窗口,可用于将文本输入到不同的文本输入中?
- javascript - 使用 AJAX 调用的结果初始化 Vue 数据
- flutter - 在“extensionRPCs”中找不到“ext.flutter.driver” - 会是什么问题?
- ruby-on-rails - 为什么我需要在 Ruby on rails 应用程序中包装线程?