我相信将主记录保存在sql数据库中并将它们复制到nosql数据库是一种非常常见的方法。
ElasticSearch拥有有关其弹性的持续状态页面。即使在最新版本中,ElasticSearch也会在许多不同情况下丢失数据。ElasticSearch索引的结构的重大变化(例如添加分析器)要求您重新索引所有文档。如果您有其他文档来源,则此过程更安全。归根结底,ElasticSearch并非旨在始终如一地存储文档- 在偶然的数据丢失不会造成灾难的情况下,我只会选择使用ElasticSearch作为主要存储。
与ElasticSearch不同,MongoDB旨在具有弹性。您应该能够安全地将文档存储在MongoDB中。我发现尝试在MongoDB中进行全文搜索可能会有些痛苦,至少与ElasticSearch相比。在我看来,对于文本搜索,MongoDB与MysqL的FULLTEXT相比的唯一优势是它是分布式的。
我们现在正在运行ElasticSearch和MysqL- 收益大大超过了额外基础架构和处理两者之间复制的麻烦。我们以前曾尝试将nosql解决方案用作主要数据存储,但结果却不尽人意。将ES与MysqL结合使用可为您带来两全其美的优势- sql中数据的一致性和安全性,以及ES中可扩展,有效的全文本搜索。