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

Posted

技术标签:

【中文标题】DSE (Cassandra) - int 数据类型的范围搜索【英文标题】:DSE (Cassandra) - Range search on int data type 【发布时间】:2020-04-26 12:41:33 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

select * from test where header = value;

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

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

【讨论】:

以上是关于DSE (Cassandra) - int 数据类型的范围搜索的主要内容,如果未能解决你的问题,请参考以下文章

在 SolR 中创建搜索索引时出错 - Cassandra 集成 (DSE)

DSE:地理位置,即纬度和经度在 cassandra 中存储为不同的字段

DSE Cassandra Spark 错误

可以为特定表启用 dse cassandra 审核日志吗?

将 Blob 数据从 RDBMS (Sybase) 导入 Cassandra

OpsCenter 6.7.7 不会管理在以下平台上运行的现有 cassandra 集群 (dse 6.7.7):redhat 7.6 Maipo