cassandra:带索引表达式的查询不起作用

时间:2011-11-21 12:35:08

标签: indexing cassandra phpcassa

我正试图通过此查询从Cassandra获取数据:

$cf=new ColumnFamily($data->cp,'ips');
$index[]=CassandraUtil::create_index_expression('c',1,'EQ');
$index[]=CassandraUtil::create_index_expression('begin_ip',1599147740,'GTE');
$index[]=CassandraUtil::create_index_expression('end_ip',1599147740,'LTE');
$index_clause = CassandraUtil::create_index_clause($index);
$rows=$cf->get_indexed_slices($index_clause);
foreach($rows AS $key=>$row)
{
    $result[]=$row;
}
var_dump($result);

但结果是 null 。 我绝对相信cf ips中有一行绝对回答了这个问题。

所有列的验证类为IntegerType

在cassandra-cli中,相同的查询:

get ips where c = int('1') and 
    begin_ip <= int('1599147740') and
    end_ip >= int('1599147740');

也获得 null

我做错了什么?

1 个答案:

答案 0 :(得分:3)

首先,您是否在'c'列上创建了索引?

其次,您需要对表达式运算符使用'cassandra_IndexOperator :: EQ',而不是字符串。