【发布时间】:2017-01-25 10:34:41
【问题描述】:
我正在开发 mongoose 文档的搜索功能,我必须搜索超过 250,000 个文档。 在此功能中,我必须在多个字段上添加搜索索引。 在文档中,一些字段是字符串类型, 有些是多层次的对象。 我已经索引了所有可能的字段。
在本地,我有 100,000 个文档,当我搜索它们时,大约需要 300-400 毫秒。 但是当我在服务器上搜索它们时,大约需要 10-15 秒才能做出响应。
搜索查询是基于条件的,但我正在共享一个小代码 sn-p。
$and(
{
$or:[
{'field1': {$regex: re }},
{'field2': {$regex: re }},
{'level1.level2.value': {$regex: re }}
]
},
{
$and:[
{
lowAge: {$lte: parseInt(age)}
},
{
highAge: {$gte: parseInt(age)}
},
{
$or:[
{
gender:gender
},
{
gender:"N/A"
}
]
}
]
}
)
有人可以建议我如何加快服务器上的进程。
【问题讨论】:
-
我的猜测是您的服务器在 RAM、CPU 或(可能)两者方面的性能不足。您使用的是哪种实例类型?此外,正则表达式查询可能非常慢,即使使用索引也是如此。如果可能,尽量避免它们。
-
除正则表达式之外的任何你知道的替代方法
-
这完全取决于您的查询/正则表达式的样子。
-
还是要看
re是什么。 -
@robertkelp 我们在一个集群中有三个实例,每个实例都有 4gb 内存和可爆 CPU。读取应该分布在它们之间,而写入将始终转到当前主节点。
标签: node.js mongodb amazon-ec2 mongoose mongoose-schema