reactjs - 关于使用 Mongoose/Elasticsearch 自动完成搜索栏的指南
问题描述
我正在建立一个工作委员会网站(带有 NextJS 的 MERN 堆栈),我需要一些关于以下事项的指导:
1.我希望实现搜索自动完成(在您键入时显示建议)并且我知道如何使用 Mongoose 来实现它。但是,假设您有超过 10.000 名用户在逐字母输入单词时不断调用后端:
- 从长远来看,使用 MongoDB在性能方面是否足够可靠和稳定?
- 如果我的应用程序在某个时间点后大幅扩展,我是否必须切换到 ElasticSearch 或类似服务?
2.看看Indeed 或Talent 等网站中的Network 标签:你基本上是在搜索栏中的每一个键点击时调用API,他们最终每次都返回相同的建议,总是。因此,实现这样一个系统的意义何在,当您拥有可让您存储关键字的数组以避免在最小的事情上调用 API 时?我简直不明白。
3.您如何实际使用自动完成数据填充数据库?它是基于我数据库中表单中的字段还是基于“我认为人们会寻找什么”?听起来像一个愚蠢的问题,我知道,但如果我必须手动将每个关键字添加到数据库中,那么我最好创建一个数组并在客户端实现自动完成,不是吗?
4.假设MongoDB对于这样的任务性能不够(第一点),我的第二个选择是ElasticSearch,但我对这个服务的担忧是:
- 我可以不花一分钱就实现我想要的吗?我的意思是,我不想浪费我的时间来设置它,因为我知道在免费试用结束后我必须每月支付 16 美元用于一个(在初始阶段)甚至可能无法达到 100 个用户的项目。不要误会我的意思,我确实有长期的预测,但我只是不想在项目刚刚启动时一开始就浪费钱。
5.你会怎么做?
解决方案
推荐阅读
- bash - 如何在 Apache NIFI 中流的最后一个处理器中使用第一个处理器输入/输出而不存储文件/数据库
- list - 如何制作单词中大写字母的索引列表
- python-3.x - 使用 os.listdir() 在 python 中检索子文件夹列表
- notion-api - 如何使用 Notion SDK 或 API 更改块类型?
- prolog - 使用未知变量简化 Prolog 中的表达式
- c# - 在 asp.net 核心中使用身份时未找到具有授权属性的操作
- javascript -
vue.js 和 vuetify 中的按钮导致“未定义属性或方法”错误 - docker - Filebeat docker安装
- c# - ASP.Net Web 应用程序 - Windows 10 - IIS Express - System.IO.PathTooLongException
- timescaledb - 将键入的旧数据回填到压缩的超表