2012-09-13 4 views
1

헥터 :카산드라 헥터 : 주어진 행 키와 보조 인덱스에 대한 IndexedSliceQuery

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

경우 : 내가 좋아하는 헥터에 쿼리를 모델링 할 필요가 카산드라-1.1.2

헥터 코어-1.0-5 rowKey 'x'로 설정된 setStartKey와 함께 IndexedSliceQuery를 사용하지만, 여전히 secondary_indexed_column = 'y'가 포함 된 모든 행을 가져옵니다.

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을 제한 할 : 나는 addEqualsExpression에 row_key 필드를 추가하는 경우 는 ("row_key는" 'X'), 나는 다음과 같은 예외를 얻을 ?

+0

그래서 조금 혼란 스럽습니다. 특정 열을 검색 할 행 키를 제공하고 있습니까? 색인을 만들 필요가 없습니다. 행을 읽고 열 이름과 값을 확인하십시오. IndexedSliceQuery는 지정된 열 이름/값을 포함하는 일련의 행 (지정된 시작점에서)을 반환합니다. – libjack

답변

0

또 다른 옵션은 데이터를 파티션 분할 한 경우 파티션에서 수백만 행 (1,000 만 개를 초과하지 않음) 및 테이블에서 원하는만큼 많은 파티션을 지원하는 playOrm에서이 쿼리를 수행 할 수 있다는 것입니다. 그럼 그냥 쿼리를

@NoSqlQuery 할 (이름 = "findSomething"쿼리 = "PartitionID에) WHERE 날짜 t으로 테이블에서 t 선택> : 파티션 t (일부 및 YYYY < : 초")

을 참고 : 파티션 내에 있다는 점을 제외하고는 쿼리에 제한이 없으며 JOINS도 사용할 수 있습니다. !!!!

관련 문제