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 中存储为不同的字段
将 Blob 数据从 RDBMS (Sybase) 导入 Cassandra
OpsCenter 6.7.7 不会管理在以下平台上运行的现有 cassandra 集群 (dse 6.7.7):redhat 7.6 Maipo