DSE (Cassandra) - int 数据类型的范围搜索

DSE (Cassandra) - Range search on int data type

我是 Cassandra 的初学者。我创建了一个包含以下详细信息的 table,当我尝试使用令牌执行范围搜索时,我没有得到任何结果。是我做错了什么还是我对数据模型的理解?

查询select * from test where token(header)>=2 and token(header)<=4;

token 函数根据配置的分区程序的值计算令牌。计算出来的值是用来标识数据所在节点的hash,这不是数据本身。

Cassandra 只能对单个分区内的聚类列(仅适用于某些设计)的值执行范围搜索。如果您需要在任意列(也用于分区键)上执行范围,则有一个 DSE 搜索允许您索引 table 并执行不同类型的搜索,包括范围......但要考虑到它将比传统的 Cassandra 查询慢得多。

在您的情况下,您可以运行 3 个并行查询(覆盖值 2、3、4),如下所示:

select * from test where header = value;

然后在您的代码中合并结果。

我建议参加 DataStax Academy 上的 DS201 和 DS220 课程,以了解 Cassandra 如何执行查询,以及如何建模数据以实现这一点。