Hi all,

I'm trying to search by the secondary index of cassandra with "greater than
or equal". but reached an exception stating:
me.prettyprint.hector.api.exceptions.HInvalidRequestException:
InvalidRequestException(why:No indexed columns present in index clause with
operator EQ)

However, the same column family with the same column, work when the search
expression is an "equal". I'm using the Hector java client.
The secondary index type has been set to: {column_name: sport,
validation_class: DoubleType, index_type:KEYS }

here's the code reaching the exception:

public QueryResult<OrderedRows<String, String, Double>>
getIndexedSlicesGTE(String columnFamily, String columnName, double value,
String... columns) {
        Keyspace keyspace = getKeyspace();
        StringSerializer se = CassandraStorage.getStringExtractor();

        IndexedSlicesQuery<String, String, Double> indexedSlicesQuery =
createIndexedSlicesQuery(keyspace, se, se, DoubleSerializer.get());
        indexedSlicesQuery.setColumnFamily(columnFamily);
        indexedSlicesQuery.setStartKey("");
        if(columns != null)
            indexedSlicesQuery.setColumnNames(columns);
        else {
            indexedSlicesQuery.setRange("", "", true, MAX_RECORD_NUMBER);
        }
        indexedSlicesQuery.setRowCount(CassandraStorage.MAX_RECORD_NUMBER);
        indexedSlicesQuery.addGteExpression(columnName, value);
// this doesn't work :(
        //indexedSlicesQuery.addEqualsExpression(columnName, value);    //
this works!
        QueryResult<OrderedRows<String, String, Double>> result =
indexedSlicesQuery.execute();

        return result;
    }


Is there any column_meta setting that is required in order to make GTE
comparison works on secondary index?

Thank you.

Yuhan Zhang

Reply via email to