【问题标题】:error in monogdb "errmsg" : "WiredTigerIndex::insert: key too large to index, failingmongodb“errmsg”中的错误:“WiredTigerIndex::insert: 键太大而无法索引,失败
【发布时间】:2017-04-11 09:34:08
【问题描述】:

我正在 mongo 中创建索引:

db.table.createIndex({"chr" : 1, "Start" : 1, "End" : 1, "Ref" : 1, "Alt" : 1}) 

它运行了一段时间并给出了错误消息:

error in monogdb "errmsg" : "WiredTigerIndex::insert: key too large to index, failing

如何解决这个错误?

【问题讨论】:

标签: mongodb mongodb-query


【解决方案1】:

在 MongoDB 中,从 2.6 开始,索引条目的总大小必须小于 1024 字节。 Documentation here

换句话说,您的至少一个文档在您尝试索引的字段之一中具有较大的值。

一般来说,像这样索引非常大的值并不是一个好主意,因为它创建的索引与较小的索引相比效率较低,并且在 RAM 中占用更多空间,可以在 MongoDB 节点上更好地使用.

你可以使用这个:mongod --setParameter failIndexKeyTooLong=false

但这看起来不是一个好主意。如果要索引的文本很大,则应考虑使用全文索引,也可以使用散列索引。

【讨论】:

  • 欢迎您@anop.perl。如果您认为您的案例已结案,请验证答案。
  • 在 MongoDB 4.2 中,此限制已被删除,但我最初的评论仍然存在:索引越小越好。
  • 如何在散列索引和文本索引之间做出决定?
  • 哈希索引主要用于分片集群中的均匀分布的插入操作,当没有更好的选择时。文本索引支持用于文本搜索查询的 $text 查询运算符。
【解决方案2】:

这也可能是由于同一字段同时具有文本索引和标准索引。通过删除其中一个,您将能够解决此问题。

【讨论】:

    猜你喜欢
    • 2011-09-16
    • 2015-03-03
    • 2014-10-09
    • 1970-01-01
    • 2016-09-03
    • 2016-08-17
    • 2019-09-16
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多