Cassandra是一个列族数据存储区,这意味着每个列都有自己的时间戳/版本,并且可以更新Cassandra行的特定列,通常称为部分更新。
我正在尝试实现一个管道,使得Cassandra列族中的数据也可以在Solr或Elastic Search等搜索引擎中搜索。
我知道Datastax Enterprise Edition确实提供了开箱即用的Cassandra Solr集成。
鉴于Solr和ElasticSearch在文档级别而不是在Field级别维护版本控制,Solr和Cassandra的数据模型在概念上存在脱节。
如何在Cassandra中完成部分更新写入Solr?
换句话说,在Cassandra中完成的部分更新是否会在没有相互更新的情况下写入Solr?
答案 0 :(得分:0)
我可以看到你可能会从这里来到哪里,但对于阅读此内容的人来说,知道以下陈述不正确也很重要
鉴于Solr和ElasticSearch在文档级别而不是在Field级别维护版本控制,Solr和Cassandra的数据模型在概念上存在脱节。
为此添加一些颜色让我试着解释一下。当更新写入Cassandra时,无论内容如何,新的突变都会进入写入路径,如下所示:
https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlHowDataWritten.html
DSE搜索在表上使用“辅助索引挂钩”,然后将传入的写入推送到索引队列,该索引队列将写入文档并存储在Lucene索引中。该架构在这里提供了一个高级概述:
这篇博文现在有点陈旧,但仍然概述了这个概念:
http://www.datastax.com/dev/blog/datastax-enterprise-cassandra-with-solr-integration-details
所以任何更新,无论是单列还是整行都会被同时编入索引。