我是一个初学者使用Cassandra。我创建了一个包含以下详细信息的表,当我尝试使用token执行范围搜索时,没有得到任何结果。是我做错了什么,还是我对数据模型的理解错了?查询 select * from test where token(header)>=2 and token(header)<=4;
select * from test where token(header)>=2 and token(header)<=4;
2nbm6dog1#
这个 token 函数根据配置的分区器的值计算令牌。计算出的值是用于标识数据所在节点的哈希值,这不是数据本身。cassandra只能在单个分区内的集群列(仅适用于某些设计)上对值执行范围搜索。如果您需要对任意列执行range(也适用于分区键),有一个dse搜索,它允许您索引表并执行不同类型的搜索,包括range。。。但要考虑到它将比传统的cassandra查询慢得多。在您的情况下,可以并行运行3个查询(覆盖值2、3、4),如下所示:
token
select * from test where header = value;
然后在代码中合并结果。我建议参加datastax academy的ds201和ds220课程,了解cassandra如何执行查询,以及如何对数据进行建模以实现这一点。
1条答案
按热度按时间2nbm6dog1#
这个
token
函数根据配置的分区器的值计算令牌。计算出的值是用于标识数据所在节点的哈希值,这不是数据本身。cassandra只能在单个分区内的集群列(仅适用于某些设计)上对值执行范围搜索。如果您需要对任意列执行range(也适用于分区键),有一个dse搜索,它允许您索引表并执行不同类型的搜索,包括range。。。但要考虑到它将比传统的cassandra查询慢得多。
在您的情况下,可以并行运行3个查询(覆盖值2、3、4),如下所示:
然后在代码中合并结果。
我建议参加datastax academy的ds201和ds220课程,了解cassandra如何执行查询,以及如何对数据进行建模以实现这一点。