条件查询在cql 3.0.0中不起作用

  发布于 2023-02-06 12:34

我试图在cassandra CQL中执行条件查询,但它给我的错误就像

cqlsh:events> select * from standardevents where name=ActivityPg_view;

我正在执行上面的查询,它给我下面的错误

错误请求:第1:55行输入';'没有可行的选择 也许你打算使用CQL 2?启动cqlsh时尝试使用-2选项.

cqlsh:events> select*from standardevents其中name ='ActivityPg_view';

我正在执行上面的查询,它给我下面的错误

错误请求:使用Equal运算符的by-columns子句中不存在索引列

当我尝试使用CQL 2执行时

cqlsh:events> select * from standardevents where name=ActivityPg_view;

它给我低于误差,

错误请求:by-columns子句中没有带有"equals"操作符的索引列

cqlsh:events> select*from standardevents其中name ='ActivityPg_view';

它给我低于误差,

错误请求:by-columns子句中没有带有"equals"操作符的索引列也许您打算使用CQL 3?启动cqlsh时尝试使用-3选项.

那么有人可以提出问题以及如何解决这个问题并执行条件查询?

cqlsh> DESCRIBE COLUMNFAMILY events.standardevents;

CREATE TABLE standardevents (
    uuid timeuuid PRIMARY KEY,
    data text,
    name text,
    time text,
    tracker text,
    type text,
    userid text
  ) WITH bloom_filter_fp_chance=0.010000
    AND caching='KEYS_ONLY'
    AND comment=''
    AND dclocal_read_repair_chance=0.000000
    AND gc_grace_seconds=864000
    AND read_repair_chance=0.100000
    AND replicate_on_write='true'
    AND populate_io_cache_on_flush='false'
    AND compaction={'class': 'SizeTieredCompactionStrategy'}
    AND compression={'sstable_compression': 'SnappyCompressor'};

AndySavage.. 5

您的表(CF)没有名为courseid的字段(因此错误"where子句中的未定义名称courseid").您无法查询不存在的内容.

你在那里期待那个领域吗?(如果有帮助,那个表的PK被称为'uuid')你在查询正确的表格吗?没有其他建议.

编辑:更新后

您的CQL3尝试缺少名称周围的引号,但除此之外......在Cassandra中,您无法通过非键列随机查询.Cassandra是一个分区行存储,它并不是真正用于以您尝试的方式进行查询.

您可以添加辅助索引来解决此问题,但您应该意识到它与传统SQL不同.拥有第二个索引需要将群集中的所有节点都命中到查询中.如果您的数据具有高基数,这也是不理想的.

在Cassandra中,一般的前提是存储很便宜,您应该根据查询而不是数据来建立模型.一切都不正常.例如,如果您需要按名称提取事件,那么您应该创建一个按名称键入的表,并包含您需要的所有事件数据.这样读取它们(基本上)和O(1)操作.

1 个回答
  • 您的表(CF)没有名为courseid的字段(因此错误"where子句中的未定义名称courseid").您无法查询不存在的内容.

    你在那里期待那个领域吗?(如果有帮助,那个表的PK被称为'uuid')你在查询正确的表格吗?没有其他建议.

    编辑:更新后

    您的CQL3尝试缺少名称周围的引号,但除此之外......在Cassandra中,您无法通过非键列随机查询.Cassandra是一个分区行存储,它并不是真正用于以您尝试的方式进行查询.

    您可以添加辅助索引来解决此问题,但您应该意识到它与传统SQL不同.拥有第二个索引需要将群集中的所有节点都命中到查询中.如果您的数据具有高基数,这也是不理想的.

    在Cassandra中,一般的前提是存储很便宜,您应该根据查询而不是数据来建立模型.一切都不正常.例如,如果您需要按名称提取事件,那么您应该创建一个按名称键入的表,并包含您需要的所有事件数据.这样读取它们(基本上)和O(1)操作.

    2023-02-06 12:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有