Это критический вариант использования поиска, и MongoDB и Redis идеально подходят для поиска по ключу и не используются для поиска, в то время как Elasticsearch является распределенной поисковой системой, созданной специально для такого случая использования.
Перед тем, как выбрать систему, вы должны знать, как работает ваша функция, и подумать о ее выборе.
Нефункциональные требования для вашей функции
- Каково общее количество поисковых запросов в секунду (QPS)?
- Как часто вы будете обновлять документы (ie, имена в вашем примере).
- Что такое SLA после того, как имена обновляются и появляются в результатах поиска?
- SLA для результатов поиска.
Некоторые функциональные требования.
- Как должно выглядеть автозаполнение, префикс, инфиксный поиск по именам?
- Минимальное количество символов, которое должен ввести пользователь, прежде чем показывать им результаты автозаполнения .
- Как часто могут изменяться вышеуказанные требования.
Индексированные документы Elasticsearch в инвертированном индексе и работают на соответствие токенов (которые могут быть легко настроены в соответствии с требованиями бизнеса) следовательно, супер быстро в поиске. Redis и MongoDB не имеют этой структуры внутри и не должны использоваться для этого варианта использования. У вас не должно быть никаких сомнений в выборе Elasticsearch вместо них для реализации автозаполнения.
Поскольку автозаполнение является одной из основных функций поиска, существует отличный блог , который вам следует прочитайте, чтобы понять различные подходы, предлагаемые Elasticsearcg, и их компромисс.