部分更新如何在DataStax Solr中工作

时间:2016-11-01 17:45:14

标签: solr cassandra datastax-enterprise

Cassandra是一个列族数据存储区,这意味着每个列都有自己的时间戳/版本,并且可以更新Cassandra行的特定列,通常称为部分更新。

我正在尝试实现一个管道,使得Cassandra列族中的数据也可以在Solr或Elastic Search等搜索引擎中搜索。

我知道Datastax Enterprise Edition确实提供了开箱即用的Cassandra Solr集成。

鉴于Solr和ElasticSearch在文档级别而不是在Field级别维护版本控制,Solr和Cassandra的数据模型在概念上存在脱节。

如何在Cassandra中完成部分更新写入Solr?

换句话说,在Cassandra中完成的部分更新是否会在没有相互更新的情况下写入Solr?

1 个答案:

答案 0 :(得分:0)

我可以看到你可能会从这里来到哪里,但对于阅读此内容的人来说,知道以下陈述不正确也很重要

  

鉴于Solr和ElasticSearch在文档级别而不是在Field级别维护版本控制,Solr和Cassandra的数据模型在概念上存在脱节。

为此添加一些颜色让我试着解释一下。当更新写入Cassandra时,无论内容如何,​​新的突变都会进入写入路径,如下所示:

https://docs.datastax.com/en/cassandra/3.x/cassandra/dml/dmlHowDataWritten.html

DSE搜索在表上使用“辅助索引挂钩”,然后将传入的写入推送到索引队列,该索引队列将写入文档并存储在Lucene索引中。该架构在这里提供了一个高级概述:

https://docs.datastax.com/en/datastax_enterprise/5.0/datastax_enterprise/srch/searchArchitecture.html

这篇博文现在有点陈旧,但仍然概述了这个概念:

http://www.datastax.com/dev/blog/datastax-enterprise-cassandra-with-solr-integration-details

所以任何更新,无论是单列还是整行都会被同时编入索引。