我正在学习NoSQL,并为我的客户的一个需求寻找不同的选择。在提出这个问题之前,我已经查阅了各种资源(一个对NoSQL一知半解的人)
而Elastic search
最擅长索引(由Lucene支持),可以通过抛出一些随机文本来随机搜索数据。但是,即使我想检索从m_date到to_date
的数据,它的工作是否也一样(我预计可能是这样)。但真正的问题是,它是一个搜索引擎,还是像Cassandra一样完美的NoSQL数据存储?如果是,为什么我们还需要卡桑德拉?
如果这两个都在不同的世界,请解释!我们如何将它们结合起来以获得更有效的解决方案?
我们的一个应用程序使用存储在Cassandra和ElasticSearch中的数据。我们尽可能使用Cassandra访问这些记录,并将数据复制到查询表中,以满足特定的应用程序端请求。对于比查询表允许的更自由的搜索,ElasticSearch很好地执行了该功能。
我们(对自己)也问过同样的问题……“为什么我们不从ElastsicSearch中获得所有东西呢?”
答案是,ElasticSearch被设计成一个搜索引擎,而不是一个持久的数据存储。有时,ElasticSearch会丢失写入。模式更改在ElasticSearch中很难做到,而不是将所有内容都清除并重新加载。为此,我编写了一些工作,旨在使ElasticSearch与我们的Cassandra集群保持同步。最近在Quora上也有一个关于这个话题的讨论,产生了类似的观点。
我对类似的问题写了一个更新的答案:
ElasticSearch vs.ElasticSearch+Cassandra