尽管有二级索引,InvalidQueryException?

时间:2014-11-25 08:40:08

标签: cassandra datastax datastax-java-driver database nosql

我有一个列系列描述如下。我有名字栏的二级密钥。

CREATE TABLE group (
      pid timeuuid,
      members map<bigint, boolean>,
      name text,
      PRIMARY KEY ((pid))
    ) WITH
      bloom_filter_fp_chance=0.010000 AND
      caching='KEYS_ONLY' AND
      comment='' AND
      dclocal_read_repair_chance=0.100000 AND
      gc_grace_seconds=864000 AND
      index_interval=128 AND
      read_repair_chance=0.000000 AND
      replicate_on_write='true' AND
      populate_io_cache_on_flush='false' AND
      default_time_to_live=0 AND
      speculative_retry='99.0PERCENTILE' AND
      memtable_flush_period_in_ms=0 AND
      compaction={'class': 'SizeTieredCompactionStrategy'} AND
      compression={'sstable_compression': 'LZ4Compressor'};

    CREATE INDEX pidx ON group(name);

query关于来自java驱动程序的name列的相等性给了我一个

com.datastax.driver.core.exceptions.InvalidQueryException: No indexed columns present in by-columns clause with Equal operator

我的查询如下。谷歌中的所有搜索结果都是关于没有secondary index或使用一些非等同关系运算符。

尽管有二级索引,但这个错误的原因是什么?

以下是我的问题:SELECT * FROM group WHERE name ='Name'

更新:相同的架构在我的localhost cassandra服务器上运行,但在我们公司提供的服务器中不运行。

在任何情况下,它都在cqlsh窗口工作,但在远程服务器的情况下它不能通过java数据存储驱动程序工作其他类型的查询工作正常。

谢谢。

1 个答案:

答案 0 :(得分:2)

刚刚浏览了您的代码。创建上面提到的表(使用复制粘贴只是为了确保您所做的一切都是正确的),创建了索引。一切正常。这导致两个结论之一:

  • 索引创建失败,导致您看到的错误消息。 (我的钱就在这个......)
  • 您可能使用了错误的键空间。