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

问题描述 投票:0回答:1

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

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

node.js mongodb rest api elasticsearch
1个回答
0
投票

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

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


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.