我需要实现一个自动完成功能,其中包含超过500,000个名称,这些名称可能会增加到超过4,000,000个。
后端使用Spring调用Java REST Web服务。我应该使用MongoDB、Redis还是Elasticsearch来存储和查询/搜索名称?
我需要实现一个自动完成功能,其中包含超过500,000个名称,这些名称可能会增加到超过4,000,000个。
后端使用Spring调用Java REST Web服务。我应该使用MongoDB、Redis还是Elasticsearch来存储和查询/搜索名称?
这是一个关键的搜索用例,MongoDB和Redis非常适合基于关键字查找,但不适合于搜索,而Elasticsearch是专门为此用例构建的分布式搜索引擎。
在选择系统之前,您应该了解您的功能如何内部运作,并考虑以下选择因素。
Elasticsearch将文档索引到反向索引中,并使用tokens匹配进行工作(可以轻松定制以适应业务需求),因此在搜索方面非常快速。Redis和MongoDB在内部没有这种结构,不应用于此用例。您不应该对在实现自动完成时选择Elasticsearch产生任何疑问。