solr - DSE SolR 查询结果不一致结果集不一致

标签 solr datastax-enterprise

我们正在虚拟机上的特定集群中运行启用了 cassandra 和 SolR 的 DSE 3.2.2 集群、3 个节点和 2 的复制因子。

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

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

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

在我们的用例中,过时几秒钟的数据不是问题,因此 the workaround via session stickyness没有为我解决这个问题。问题是数据在几天后仍然不一致。

接下来是 complete re-index with wiping the data已在列表中,但需要一些时间才能完成。

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

非常感谢任何有关查询不一致的建议或分享经验!

更新#1

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

数据源表仍使用“旧”紧凑存储选项。

更新#2

在最新的评论之后,我不确定是否同时运行了进一步的插入。所以我确保推迟任何插入,运行nodetool修复,完全重建索​​引。

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

更新 #3 看来事情又稳定了!升级似乎最初已经解决了问题,但由于changed default transport from tcp to http的问题我们在日志文件中发现,不一致之处仍然存在。两天前切换回http,修复并重新索引。所有插入都没有任何问题。谢谢您的帮助!我稍后会研究 tcp<->switch。

最佳答案

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

这种不一致由 Cassandra 通过读取修复和提示切换自动解决,但也可能需要手动节点修复;无论如何,重新索引没有帮助,因为不一致首先出现在数据库级别。

从 3.2.5 开始的 DSE 版本应包含 Cassandra 错误修复,可大大减少丢失的突变:https://issues.apache.org/jira/browse/CASSANDRA-6510

请告诉我们您的 DSE 版本以及升级是否有帮助。

关于solr - DSE SolR 查询结果不一致结果集不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018710/

相关文章:

cassandra - 启用 CQL 二进制协议(protocol)会在 ubuntu 中抛出 YAMLException : Unable to find property - in DataStax 3. 0 安装

node.js - Nodejs Cassandra 自动分页不起作用

Cassandra 客户端未显示通过 json2sstable 所做的更改

cassandra - Docker 与 DataStax 连接无法正常工作

lucene - Solr支持自定义FunctionQuery吗?

java - 保证 Solr 提交已经发生

java - 从 Solr 组件代码中获取 Zookeeper url 和 Solr 集合名称

Datastax 代理偶尔无法报告指标

solr - SOLR:按字段的字母顺序排列结果

java - Solr 3.4 和 Httpclient 4