我已经拥有MongoDB并使用Mongoriver安装了Elasticsearch。所以我建立了我的河流:
$ curl -X PUT localhost:9200/_river/database_test/_meta -d '{
"type": "mongodb",
"mongodb": {
"servers": [
{
"host": "127.0.0.1",
"port": 27017
}
],
"options": {
"secondary_read_preference": true
},
"db": "database_test",
"collection": "event"
},
"index": {
"name": "database_test",
"type": "event"
}
}'
我只想获得country:Canada
的事件,所以我尝试:
$ curl -XGET 'http://localhost:9200/database_test/_search?q=country:Canada'
我得到了:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
我在网上搜索,我读到我应该首先使用Elasticsearch索引我的收藏(丢失链接)。我应该索引我的Mongodb吗?我该怎么做才能从现有的MongoDB集合中获得结果?
答案 0 :(得分:18)
mongodb river依赖于MongoDB的操作日志来索引文档,因此需要将mongo数据库创建为副本集。我假设你错过了它,所以当你创建河流时,初始导入看不到索引。我也假设您使用的是Linux,并且掌握了shell cli工具,请试试这个:
请按照以下步骤操作:
编辑mongodb.conf(通常在/etc/mongodb.conf中,但在安装方式上有所不同)并添加以下行:
replSet = rs0
“rs0”是复制品的名称,可以是您喜欢的任何名称。
重新启动你的mongo然后登录它的控制台。类型:
rs.initiate()
rs.slaveOk()
提示将更改为rs0:PRIMARY>
我建议使用此插件:http://mobz.github.io/elasticsearch-head/来浏览您的索引和河流,并确保您的数据已编入索引。
如果这不起作用,请发布您用于mongodb-river-plugin,elasticsearch和mongodb的版本。