0

我目前有一项服务,它运行多个查询来在我的数据库中构建数据。然后它使用 Logstash 的 JDBC 输入插件将数据发送到 Elastic Search。问题是 Logstash 需要相当多的时间引导(有时超过将数据发送到 Elastic Search 所需的时间)。

我决定探索让 Logstash 作为服务运行以消除这个引导时间,但是似乎没有办法让它作为服务运行并接受“请求”来运行 JDBC 语句。

最接近的似乎是使用 TCP/HTTP/Websocket 插件从我的服务接收数据,然后将其发送到 Elastic Search。

尝试开发类似的东西是否有意义,或者使用我的服务直接与 Elastic Search 通信会更好吗?

我希望我的问题足够清楚,谢谢。

4

1 回答 1

0

回答我自己的问题,以供遇到同一问题的任何人将来参考。

在阅读了大量论坛讨论后,我最终得出结论:

  1. 目前无法设置 JDBC 输入并随意触发(https://discuss.elastic.co/t/trigger-logstash-jdbc-input-plugin/54278)。您可以获得的最接近的方法是使用schedule选项,定期执行此操作或手动启动/停止服务,这使我们
  2. 作为一个 Java 服务,启动 Logstash 需要相当长的时间(为什么 logstash 需要这么长时间才能启动/加载?)。加快速度的唯一方法是增加机器的规格,或者对于 5.5.0 之前的版本,修改 java 的熵源:( https://discuss.elastic.co/t/logstash-starting-damn -慢/125708/3 )
  3. 一个人可以完全使用 Logstash,而是使用一个(或多个并行!!!)ES _bulk 请求来尽快填充索引(https://discuss.elastic.co/t/fastest-way-to-import-billions -of-documents/81317/3)。
  4. 如果不想放弃 Logstash,那么建议编写一个自定义输入插件:https ://www.elastic.co/guide/en/logstash/current/input-new-plugin.html 。
于 2019-04-30T14:04:57.787 回答