Я работаю над функцией поиска поверх документов мангуста, где мне приходится искать более 250 000 документов. В этой функции я должен добавить индексы поиска по нескольким полям. В документах некоторые из полей являются строковыми типами, Некоторые из них являются объектами с несколькими уровнями. Я проиндексировал все возможные поля.Mongoose ускоряет поиск по нескольким полям
На местном уровне у меня есть 100 000 документов, и когда я просматриваю их, это заняло около 300-400 мс. Но когда я просматриваю их на сервере, на это потребовалось около 10-15 секунд.
Поисковый запрос является условным, но я использую небольшой фрагмент кода.
$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"
}
]
}
]
}
)
Может кто-нибудь посоветует мне, как я могу ускорить процесс на сервере.
Я предполагаю, что ваш сервер недостаточно, с точки зрения ОЗУ, процессора или (возможно) обоих. Какой тип экземпляра вы используете? Кроме того, запросы регулярного выражения _can_ будут очень медленными, даже с индексами. По возможности старайтесь избегать их. – robertklep
любая альтернатива, которую вы знаете, кроме регулярных выражений –
Все зависит от того, как выглядят ваши запросы/регулярные выражения. – robertklep