Mongodb文本搜索大集合

时间:2015-06-10 02:06:09

标签: mongodb

鉴于下面的集合可能有大约1800万份文件。我需要在文档的有效负载部分使用搜索功能。 由于数据量很大,如果我在文档中的有效负载字段上创建文本索引,是否会产生性能问题?当集合包含数百万个文档时,是否存在任何已知的性能问题?

{
    "_id" : ObjectId("5575e388e4b001976b5e570d"),
    "createdDate" : ISODate("2015-06-07T05:00:34.040Z"),
    "env" : "prod",
    "messageId" : "my-message-id-1",
    "payload" : "message payload typically 500-1000 bytes of string data"
}

我使用MongoDB 3.0.3

2 个答案:

答案 0 :(得分:0)

我相信这正是NoSQL DB的设计目标;通过[反转]索引,您可以快速访问一段数据。 Mongo就是为此而设计的。 NoSQL DB就像Mongo一样,旨在处理分布在集群中多个节点上的大量数据。 Mongo范围内的1800万非常小。如果索引属性,则不应出现任何性能问题。您可能还希望阅读sharing,这是从MongoDB中获得最佳性能的关键。

答案 1 :(得分:0)

您可以使用 Mongo DB Atlas 功能,您可以在其中根据 MongoDB 提供的不同分析器搜索您的文本。然后您可以进行模糊搜索,其中也将返回更接近您的文本的文本: PS:全文匹配和忽略模糊,只需要从下面排除模糊对象。

$search:{
 {
  index: 'analyzer_name_created_from_atlas_search',
  text: {
    query: 'message payload typically 500-1000 bytes of string data',
    path: 'payload',
    fuzzy:{
      maxEdits: 2
    }
  }
 }
}