1

我正在尝试使用 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) 行表示该文件已添加到我的索引中。我不确定第 (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"
  }
}'
4

2 回答 2

1

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

于 2014-01-28T09:23:06.003 回答
0

我有同样的问题。

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

curl -XPUT "localhost:9200/_river/mongosearch/_meta" -d '
{
  “类型”:“mongodb”,
  “蒙哥”:{
    “服务器”:
    [
      {“主机”:“本地主机”,“端口”:27017 }
    ],
    “选项”:{“secondary_read_preference”:假},
    "db": "我的数据库名",
    “集合”:“用户”,
    “gridfs”:假
    },
    “指数”: {
      “名称”:“mongosearch”,
      “类型”:“用户”}
}'

编辑: 上面的脚本执行以下操作:

  1. 告诉索引名为 mongosearch。

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

  3. 不要河流碎片(次要阅读偏好)。

  4. 数据库的名称是 nydbname。

  5. 将进入索引的集合是用户集合。'

  6. gridfs是关于存储文档的东西。

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

于 2013-09-11T13:55:23.640 回答