我们正在尝试开发一种使用 elasticsearch 在我们的 mongodb 实例上进行全文搜索的策略。看起来我们想用作过滤器的每个键都必须包含在弹性索引中。潜在地,我们可能希望使用 mongo 中的每个键作为过滤器 - 即对描述进行全文搜索,按日期和电话号码过滤。有没有人有任何将全文添加到 mongo 的真实经验可以分享?
也许我们可以将elasticsearch用作数据库?
最佳答案
我认为没有任何理由将 ElasticSearch 与 MongoDb 结合使用,只是将 ElasticSearch 用作必须搜索的文档的单独文档存储。是的,你甚至可以作为整个数据库。当然,这取决于您的领域模型和其他因素。
如果您不需要词干、模糊搜索、复杂的通配符搜索,您可以使用 mongoDb 进行搜索。插入新文档时,将其拆分为小写单词,例如添加到数组“单词”中。稍后您可以使用 regex
对该数组执行搜索请求。不是你不能在这个正则表达式中使用 I
(忽略大小写)选项,你只能搜索 LIKE%
通配符(或没有通配符),否则搜索不会使用 mongoDb 索引.
还有一个选择-您可以尝试查找river对于 mongoDb
另一种选择 - 如果您使用 Java,则使用 Lucene
。可能您将能够扩展 Directory
类,这样 Lucene 会将索引存储在 MongoDb 中,而不是文件系统或 RAM 中。我没有在这方面做过任何研究,但我认为这是可能的
关于mongodb全文检索策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9179414/