节点js中的REST api,用于使用弹性搜索进行全文搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节点js中的REST api,用于使用弹性搜索进行全文搜索相关的知识,希望对你有一定的参考价值。

我正在使用mongodb作为数据库在节点js中开发REST API。我的数据库模式中有很多模型,如省,景点,食品,节日等。在前端,我有一个搜索框,可以从所有这些模型执行搜索。我已将数据存储在mongo atlas online中。所以,我想使用弹性搜索从所有模型为我的应用程序构建整个搜索API。

我发现mongodb全文搜索效率不高。而且mongoosastic自动索引弹性搜索,但它只适用于我需要从所有模型中搜索的单个模型。我没有逐步使用弹性搜索在节点js中构建rest api。我是新手,我对mongo db中所有型号的完整搜索感到困惑。

答案

对于开箱即用的解决方案,您可以尝试使用https://github.com/yougov/mongo-connector - 但这需要您运行副本集而不是单个数据库。

如果您想要更多控制,那么您可以考虑在数据库层中添加代码(一旦您成功将其存储在MongoDB中,它同步或异步地)将ElasticSearch索引更新为对象。这也必须在更新ES索引时处理失败/重试。


最后......如果你需要从所有模型中搜索,也许你应该更多地考虑如何在ElasticSearch中建模数据/索引它。

例如,如果我希望我的用户能够搜索可能是以下任何一个的名称:[省,景点,食物,节日],那么我可能会创建一个仅包含那些“名称”字段+唯一ID的索引它指向它们代表的对象。也许multi_match查询可能对此有所帮助。

更进一步(并且仍假设您只需搜索“名称”字段),您可以考虑仅在ElasticSearch索引中存储名称/ ID,然后通过其ID从Mongo检索完整对象。以这种方式索引要少得多。

以上是关于节点js中的REST api,用于使用弹性搜索进行全文搜索的主要内容,如果未能解决你的问题,请参考以下文章

角度不会向节点js rest API发出发布请求

使用 httponly cookie 将 JWT 从节点 REST API 发送到 Vue.js SPA

显示rest api json响应,如使用angular js的文本框自动填充

如何将Django Rest API与BackboneJS前端集成用于单页面应用程序

使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证

Spring Data REST 似乎不适用于 elasticsearch