提问者:小点点

我该怎么做才能从mysql实时更新到elasticsearch


我创建了一个提要脚本基于:https://github.com/jprante/elasticsearch-jdbc/wiki/jdbc-plugin-feeder-mode-as-an-alternative-to-the-deprecated-elasticsearch-river-api

我没有在上面的例子中添加任何新属性(当然改变了DB设置等)。该表被索引得相当快,然后feeder脚本优雅地终止。当新记录添加到db时,我需要做什么才能使feeder脚本持久化并从mysql db(近)实时获取更新?

谢谢你们

更新:

弹性搜索版本是1.4.4,安装了插件river和head。


共2个答案

匿名用户

您有几个选项来获得近乎实时的行为,但它会带来一些成本。

  1. 显式触发索引刷新

可以在写入所有数据后完成。

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html

您可以将索引刷新绑定设置为短时间跨度。

{
  "settings": {
    "refresh_interval": "1s" 
  }
}

有关详细信息,请参阅:https://www.elastic.co/guide/en/elasticsearch/guide/current/near-real-time.html

匿名用户

感谢大家的关注。

我最终决定在DB和ES中创建文档。我在获得新文档中的任何值之前刷新索引(在索引中创建文档之后)。我知道这不是一个“理想”的情况,但现在解决了我的问题。