Elasticsearch没有索引所有文档

时间:2013-09-11 09:39:15

标签: mongodb elasticsearch

我正在尝试使用Elasticsearch索引存储在MongoDB中的所有文件。但只有180842个文件被编入索引,而我的数据库中有1637870个文件。知道为什么不将所有文件编入索引?

我检查了Elasticsearch日志文件,没有错误。但是我在日志文件中找到了以下行。

(1) [2013-09-11 02:20:57,539][INFO ][river.mongodb            ] [Arsenic] [mongodb][mongodb] Add attachment: 522bef23649dd3bb06a61fd8
(2) [2013-09-11 02:20:57,539][INFO ][org.elasticsearch.river.mongodb.MongoDBRiver$Indexer] Add Attachment: 522bef0fe819cc4b70875a48 to index mongoindex / type files
(3) [2013-09-11 02:20:57,539][INFO ][river.mongodb            ] [Arsenic] [mongodb][mongodb] Caught file: 522bef230eb5b705cf8ccd91 - /data/Test.java

第(2)行表示该文件已添加到我的索引中。我不确定Line(1)和(3)的含义。这是否意味着这些文件没有添加到索引?

注意我使用以下代码创建索引:

curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d '{
  "type": "mongodb",
  "mongodb": {
    "db": "submission_data",
    "collection": "fs",
    "gridfs": true
  },
  "index": {
    "name": "mongoindex",
    "type": "files"
  }
}'

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

如果您有很多集合,请尝试一次索引一个,然后重新启动elasticsearch。 禁用gridfs并查看我如何在mongodb上创建索引:

curl -XPUT "localhost:9200/_river/mongosearch/_meta" -d '
{
  "type": "mongodb",
  "mongodb": {
    "servers":
    [
      { "host": "localhost", "port": 27017 }
    ],
    "options": { "secondary_read_preference": false },
    "db": "mydbname",
    "collection": "users",
    "gridfs": false
    },
    "index": {
      "name": "mongosearch",
      "type":   "users"  }
}'

修改 上面的脚本执行以下操作:

  1. 告诉该索引名为mongosearch。

  2. 在端口27017中定义在localhost上运行的服务器。

  3. Dont river shards(二级阅读偏好)。

  4. 数据库的名称是nydbname。

  5. 将转到索引的集合是users集合。 “

  6. gridfs是关于存储文档的内容。

  7. 最后我们再次定义索引名称并告诉我们要索引的集合类型。

答案 1 :(得分:0)

实际上是因为你的oplog大小很小。它是一个有上限的集合。如果你增加你的oplog大小,那么它将工作..!