2012-04-12 27 views
5

Tôi đã cố gắng để lấy dữ liệu từ cơ sở dữ liệu Cassandra sử dụng lệnh này:Có thể vượt qua bất kỳ cột khác sau khi mệnh đề where trong lựa chọn công bố Cassandra

select A_NO from Activity where CALL_TYPE IN ('MOC');//here CALL_TYPE is not the row id 

Nhưng hiển thị của nó:

Expected key 'KEY' to be present in where clause for 'Activity' 

Có thể không lọc được dữ liệu với sự trợ giúp của khóa không chính?

Trả lời

6

Bạn không thể thực hiện việc này trực tiếp trên họ vani. Cassandra theo mặc định chỉ cho phép bạn truy vấn trên khóa hoặc một dãy khóa. Bạn có thể thực hiện điều này bằng cách tạo ra một chỉ số phổ thông trên một cột

Bạn sẽ chạy một truy vấn CQL như thế này để tạo ra hai chỉ số:

cqlsh> CREATE INDEX state_key ON users (state); 
cqlsh> CREATE INDEX birth_year_key ON users (birth_year); 

Và sau đó truy vấn như thế này:

cqlsh> SELECT * FROM users 
... WHERE gender='f' AND 
... state='TX' AND 
... birth_year='1968'; 

Here is more on Secondary indexes.

Here is the documentation on using CQL for this.

+1

Cảm ơn Paul. Nó thực sự hữu ích. Cảm ơn rất nhiều. – abhi

+1

Hãy chắc chắn rằng bạn đánh dấu câu trả lời là đã được giải quyết để người khác đến bằng sẽ biết điều này là chính xác. Cảm ơn! –