MongoDB全文搜索500,000个文档集合时性能缓慢

jgwigjjp  于 2023-03-17  发布在  Go
关注(0)|答案(1)|浏览(104)

我在MLab的M2示例上有一个Mongo v3.4 DB,在一个专用服务器上有3.5 GB RAM。
我有500,000个文档存储tweet,tweet的主体在一个字符串字段中,我在那个字段上有一个$text索引。
当我查询该字段时,可能需要几秒钟到两分钟多的时间。

[{
    "$match": {
        "$text": {
            "$search": "game losing"
        }
    }
},
{
    "$sort": {
        "score": {
            "$meta": "textScore"
        }
    }
},
{
    "$limit": 10
}]

我已审核以下帖子:

并且已经整合了对它们的回应,但我的表现仍然很差。
我确实会根据任何新的统计数据更新推文(比如,推文的点赞数上升了)。

  • Mongo文本搜索不是为50万以上的文档设计的吗?
  • 这只是一个试点,可能会增长到数百万条推文。我应该直接切换到ElasticSearch吗?
  • 我应该使用不同的策略吗?我应该将统计数据与消息文档分开存储吗?
eoigrqb6

eoigrqb61#

MongoDB是专门为处理数百万个文档而设计的,500K是一个非常小的数据集。
我认为你在客户端同时加载了所有的数据(当用户搜索该项目时),并将其分页。这导致了服务器超时。因为数据也可以是如此巨大。
您可以在此执行以下操作:使用Aggeration Framework。限制从Atlas服务器发送的数据数量。
请参阅此处的文档:https://docs.mongodb.com/manual/aggregation/
请参见该文档中的Examples。:)

相关问题