Har*_*Ali 4 cql cassandra pycassa
我正在尝试通过Cassandra中的列族进行部分搜索,类似于SQL查询,例如:SELECT*FROM columnfamily WHERE col ='val*'其中val*表示至少匹配前三个字符'val'的任何值.
我已阅读有关SELECT函数的datastax文档,但似乎无法找到对部分WHERE条件的任何支持.有任何想法吗?
在Cassandra中没有这样的通配符支持,但是您可以通过这样的方式对数据建模,以便获得相同的最终结果.
您将获取要执行此查询的列,并将其非规范化为第二列族.此CF将有一个宽行,列名称为col您要进行通配符查询的值.此CF的列值可以是原始CF的行键,也可以是原始行的其他表示形式.
然后你会使用切片来获得你关心的值.例如,如果这是要切片的宽行:
+---------+----------+--------+----------+---------+--------+----------+
| RowKey | aardvark | abacus | abacuses | abandon | accent | accident |
| +----------+--------+----------+---------+--------+----------+
| | | | | | | |
| | | | | | | |
+---------+----------+-----------------------------+--------+----------+
Run Code Online (Sandbox Code Playgroud)
使用CQL,您可以使用此查询*选择以'aba*'开头的所有内容:
SELECT 'aba'..'abb' from some_cf where RowKey = some_row_key;
Run Code Online (Sandbox Code Playgroud)
这将为您提供"算盘","算盘"和"放弃"的列.
这个策略有一些需要注意的事项:
word:some_unique_value.请记住,Cassandra并没有为您提供简单的方法来进行即席查询.相反,您需要弄清楚如何使用数据并相应地为CF建模.看一下Ed Anuff关于Cassandra索引数据的博客文章,了解有关建模数据的更多信息.
*请注意,即将发布的Cassandra版本中切片列的CQL语法正在发生变化.
| 归档时间: |
|
| 查看次数: |
4720 次 |
| 最近记录: |