incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yuhan Zhang <yzh...@onescreen.com>
Subject Re: cassandra secondary index with
Date Tue, 19 Jun 2012 19:48:38 GMT
To anwser my own question:

There should be at least on "equal" expression in the indexed query to
combine with a "gte".
so, I just added an trivial column that stays constant for equal
comparison. and it works.

not sure why this requirement exists.

Thank you.

Yuhan

On Tue, Jun 19, 2012 at 12:23 PM, Yuhan Zhang <yzhang@onescreen.com> wrote:

> 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
>
>
>
>


-- 
Yuhan Zhang
Application Developer
OneScreen Inc.
yzhang@onescreen.com <ehorne@onescreen.com>
www.onescreen.com

The information contained in this e-mail is for the exclusive use of the
intended recipient(s) and may be confidential, proprietary, and/or legally
privileged. Inadvertent disclosure of this message does not constitute a
waiver of any privilege.  If you receive this message in error, please do
not directly or indirectly print, copy, retransmit, disseminate, or
otherwise use the information. In addition, please delete this e-mail and
all copies and notify the sender.

Mime
View raw message