这是一个关键的搜索用例,MongoDB和Redis非常适合基于键的查找,而不是用于搜索目的,而Elasticsearch是专门针对此类用例构建的分布式搜索引擎。
在选择系统之前,您应该了解功能在内部的工作方式,并且要在选择它的考虑因素以下。
功能的非功能性要求
- 每秒的搜索查询总数(QPS)是多少?
- 您更新文档的频率(即示例中的名称)。
- 名称更新后出现在搜索结果中的SLA是什么?
- 您的搜索结果的SLA。
一些功能要求。
- 自动完成应如何显示名称的前缀,中缀?
- 在向他们显示自动完成结果之前,最小化用户应键入的字符数。
- 以上要求可以多久更改一次。
Elasticsearch在反向索引中建立索引的文档,并且可以处理令牌匹配(可以轻松定制以适应业务需求),因此搜索速度非常快。Redis和MongoDB在内部没有这种结构,因此不应在此用例中使用。您不应该对选择Elasticsearch来实现自动完成功能有任何疑问。
由于自动完成是必不可少的搜索功能之一,因此有一个出色的博客,您应该阅读该博客以了解Elasticsearcg提供的不同方法及其折衷方法。



