Кассандра: запрос с индексным выражением не работает - PullRequest
2 голосов
/ 21 ноября 2011

Я пытаюсь получить данные от Кассандры с помощью этого запроса:

$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');

также получает ноль .

Что я делаю не так?

1 Ответ

3 голосов
/ 22 ноября 2011

Во-первых, вы создали индекс для столбца 'c'?

Во-вторых, вам нужно использовать 'cassandra_IndexOperator :: EQ' и аналогичный для оператора выражения вместо строки.*

...