【问题标题】:Elasticsearch not indexing all documentsElasticsearch 没有索引所有文档
【发布时间】:2013-09-11 09:39:14
【问题描述】:

我正在尝试使用 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"
  }
}'

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

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

    【讨论】:

    • 我也遇到了同样的问题。我找到了一个解决方案,因为如果你提到 oplog den 的大小为 100,它将删除旧日志。所以当通过河流运行时,它只考虑 oplog。所以它会索引部分对象。参考 mongo 的 capped collection 和 oplog.rs ..!
    【解决方案2】:

    我遇到了同样的问题。

    如果您有很多集合,请尝试一次索引一个,然后重新启动 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. 最后我们再次定义索引名称并告诉我们要索引的集合类型。

    【讨论】:

    • 您好,感谢您的回复。我的问题是我在同一个集合中拥有所有文件。能否请您进一步解释一下上述索引的作用?
    • 非常感谢!我尝试了您的方法,但仍然无法正常工作。步骤如下: (1) 我创建了 10 个数据库,然后我划分了我的文件并在每个数据库的 fs.files 集合中放置了 150,000 个文件。 (2) 然后我尝试分别索引每个数据库中的文件。 (3) 我使用了您提供的相同索引,但我已将 gridFS 设置为“true”。当我索引放置在 gridFS 中的文件时,如果我将 gridFS 设置为“false”,它就无法工作。我在索引前 150,000 个文件时没有问题。当我尝试索引我接下来的 150,000 个文件时,它在索引 80,000 个文件后停止。
    猜你喜欢
    • 2020-07-17
    • 2019-06-21
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多