【问题标题】:elasticsearch throw exception work with mongodb riverelasticsearch 抛出异常与 mongodb 河一起工作
【发布时间】:2026-02-08 20:30:02
【问题描述】:

我点击链接http://elasticsearch-users.115913.n3.nabble.com/ElasticSearch-and-Mongo-DB-td4033358.html 使用 mongodb river 集成了 elasticsearch 和 mongodb。每个组件的版本是:

  • ubuntu 12.04 64bit
  • ES 0.90.0
  • mongodb 2.4.3
  • 河流 1.6.5

Mongodb 是独立运行在一台服务器上,但根据此链接http://loosexaml.wordpress.com/2012/09/03/how-to-get-a-mongodb-oplog-without-a-full-replica-set/,oplog 以 replSet 打开,并且 oplogSize 在 /etc/mongodb.conf 中配置,并且 db.oplog.rs.find() 也显示一些操作记录。 添加的索引:

curl -XPUT localhost:9200/_river/appdata/_meta -d'
{
  "type": "mongodb",
  "mongodb" : {
    "db": "test_appdata",
    "collection": "app_collection"
  },
  "index": {
    "name": "test_appdata",
    "type": "app"
  }
}'

但是当 elasticsearch 启动时,日志显示一些异常如下:

[2013-05-07 23:20:40,400][INFO ][river.mongodb            ] [Ransak the Reject] [mongodb][app] starting mongodb stream. options: secondaryreadpreference [false], throttlesize [500], gridfs [false], filter [], db [test_appdata], script [null], indexing to [test_appdata]/[app]
Exception in thread "elasticsearch[Sundragon][mongodb_river_slurper][T#1]" java.lang.NoSuchMethodError: org.elasticsearch.action.get.GetResponse.exists()Z
    at org.elasticsearch.river.mongodb.MongoDBRiver.getLastTimestamp(MongoDBRiver.java:1088)
    at org.elasticsearch.river.mongodb.MongoDBRiver.access$2200(MongoDBRiver.java:93)
    at org.elasticsearch.river.mongodb.MongoDBRiver$Slurper.getIndexFilter(MongoDBRiver.java:967)
    at org.elasticsearch.river.mongodb.MongoDBRiver$Slurper.oplogCursor(MongoDBRiver.java:1021)
    at org.elasticsearch.river.mongodb.MongoDBRiver$Slurper.run(MongoDBRiver.java:858)
    at java.lang.Thread.run(Thread.java:679)

我是elasticsearch和mongodb的新手,是mongodb的replica设置导致错误吗? 任何建议表示赞赏。

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

    您的河流与 Elasticsearch 0.90 不兼容。 移至 ES 0.20.6 或在 Mongodb River 项目中申请补丁。

    【讨论】: