1

ヘクター: hector-core-1.0-5 Cassandra-1.1.2

次のように、Hector でクエリをモデル化する必要があります。

select * from table1 where rowkey='x' and secondary_indexed_column='y'

setStartKey を rowKey 'x' に設定して IndexedSliceQuery を使用すると、secondary_indexed_column='y' を含むすべての行が取得されます。addEqualsExpression("row_key",'x') に row_key フィールドを追加すると、次の例外が発生します。

org.apache.thrift.protocol.TProtocolException: Required field 'value' was not present! Struct: IndexExpression(column_name:64 65 76 69 63 65 5F 69 64, op:EQ, value:null)
    at org.apache.cassandra.thrift.IndexExpression.validate(IndexExpression.java:562)
    at org.apache.cassandra.thrift.IndexExpression.write(IndexExpression.java:499)
    at org.apache.cassandra.thrift.IndexClause.write(IndexClause.java:521)
    at org.apache.cassandra.thrift.Cassandra$get_indexed_slices_args.write(Cassandra.java:13469)
    at org.apache.cassandra.thrift.Cassandra$Client.send_get_indexed_slices(Cassandra.java:793)
    at org.apache.cassandra.thrift.Cassandra$Client.get_indexed_slices(Cassandra.java:781)
    at me.prettyprint.cassandra.service.KeyspaceServiceImpl$19.execute(KeyspaceServiceImpl.java:732)

では、indexedSliceQuery が特定の行キーに対してのみ結果を返すように制限するにはどうすればよいでしょうか?

4

1 に答える 1

0

もう 1 つのオプションは、パーティション化されたデータがある場合、このクエリを playOrm で実行できます。これは、パーティション内の数百万行 (ただし 1000 万を超えない) と、テーブル内で必要な数のパーティションをサポートします。次に、クエリを実行するだけです

@NoSqlQuery(name="findSomething", query="PARTITIONS t(:partitionId) SELECT t FROM TABLE as t WHERE date > :some and yyyy < :second")

注: パーティション内にある場合を除き、クエリに制限はなく、JOINS も実行できることに注意してください!!!!

于 2012-09-14T20:00:26.880 に答える