DSE SolR查询结果不一致不一致ResultSet

DSE SolR查询结果不一致不一致ResultSet,solr,datastax-enterprise,Solr,Datastax Enterprise,我们正在虚拟机上运行一个启用cassandra和SolR的DSE 3.2.2集群,该集群中有3个节点,复制系数为2 使用具有默认一致性级别(最近更改为quorum)的java客户机将数据直接写入c* 问题是当查询索引时,找到的文档数量变化很大。因此,对某些数值使用stats组件也会产生不一致的结果 如果当前没有写入数据,也会出现这种情况。此后,我在该列族上手动触发了nodetool修复,从而触发了二级索引的重新索引(这花费了大约5-6个小时)。之后,结果仍然不一致 在我们的用例中,过时几秒钟的数

我们正在虚拟机上运行一个启用cassandra和SolR的DSE 3.2.2集群,该集群中有3个节点,复制系数为2

使用具有默认一致性级别(最近更改为quorum)的java客户机将数据直接写入c*

问题是当查询索引时,找到的文档数量变化很大。因此,对某些数值使用stats组件也会产生不一致的结果

如果当前没有写入数据,也会出现这种情况。此后,我在该列族上手动触发了nodetool修复,从而触发了二级索引的重新索引(这花费了大约5-6个小时)。之后,结果仍然不一致

在我们的用例中,过时几秒钟的数据不是问题,所以对我来说也不是问题。问题是,数据在之后的几天内仍然不一致

下一步,a在列表中,但需要一些时间才能完成

更新:我将升级到最新版本的C*和DSE,而不是擦除和重新索引,然后运行修复,然后运行重新索引并尽快报告(至少几天)

如果您对查询不一致性有任何建议或分享经验,我们将不胜感激

更新#1

查询结果仍然不一致。每个节点似乎为我的查询返回不同数量的文档。 集群已经升级到4.5.1,sstables已经升级,修复已经执行,整个SolR索引已经使用SolR GUI的完整reindex触发器重建

数据源表仍在使用“旧”压缩存储选项

更新#2

在最新的评论之后,我不确定在此期间是否有进一步的插入。因此,我确保推迟任何插入,运行nodetool修复,对索引进行了全面重建

查询似乎没问题! 这似乎意味着,在我上次尝试之后,不一致性已经重新出现,并且是在重新构建索引之后进行一些插入的结果。我将尝试确认这将再次开始插入

更新#3
看来情况又稳定了!升级一开始似乎已经解决了这些问题,但由于我们在日志文件中发现的问题,不一致仍然存在。切换回http,两天前修复并重新编制索引。所有的插入,因为没有任何问题。谢谢你的帮助!稍后我将研究tcpswitch。

偶尔出现的不一致,如4.x系列发行版中描述的内容已修复。是否可以升级到较新的版本?

偶尔出现的不一致,如4.x系列版本中描述的内容已修复。是否可以升级到较新的版本?

长期索引不一致主要是由Cassandra节点上的“删除突变”造成的:这些情况发生在写入正确地向客户端确认时,因为满足了所需的CL,但一些“超出CL”的节点实际上没有写入它,这意味着他们也没有索引它

这种不一致性由Cassandra通过读修复和暗示切换自动解决,但也可能需要手动节点修复;在任何情况下,重新编制索引都没有帮助,因为不一致性首先出现在数据库级别

从3.2.5开始的DSE版本应包括一个Cassandra错误修复程序,该程序可大大减少丢失的突变:


请让我们知道您的DSE版本,如果升级有帮助。

长期索引不一致主要是由Cassandra节点上的“删除突变”引起的:当写入正确地向客户端确认时,会发生这种情况,因为所需的CL已满足,但某些“超出CL”的节点实际上没有写入,这意味着他们也没有索引它

这种不一致性由Cassandra通过读修复和暗示切换自动解决,但也可能需要手动节点修复;在任何情况下,重新编制索引都没有帮助,因为不一致性首先出现在数据库级别

从3.2.5开始的DSE版本应包括一个Cassandra错误修复程序,该程序可大大减少丢失的突变:


请告知您的DSE版本,如果升级有帮助,请告知。

谢谢!我查看了发行说明,但没有发现任何关于不一致的特别说明,你能给我指一下吗?谢谢!我检查了发行说明,但没有发现任何关于不一致的特别说明,你能给我指一下吗?安装的版本是3.2.2。我现在正在计划升级到最新版本,之后会更新我的问题。非常感谢。已安装的版本为3.2.2。我现在正在计划升级到最新版本,之后会更新我的问题。非常感谢。如果使用java驱动程序插入数据,请确保检查solrvalidation.log是否有错误。还要检查system.log文件是否存在任何索引错误。当通过Cassandra接口插入时,您不会从插入中得到Solr错误,因为索引是异步进行的。2) 已修复所有节点并重新编制索引。3) 没有运行任何进一步的插入。然而,查询结果仍然不一致:是这样吗?如果使用java驱动程序插入数据,请确保检查solrvalidation.log中的错误。还要检查system.log文件是否存在任何索引错误。当通过Cassandra接口插入时,您不会从插入中得到Solr错误,因为索引是异步进行的。2) 已修复所有节点并重新编制索引。3) 没有运行任何进一步的插入。然而,查询结果仍然不一致:是这样吗?