我有一个Cassandra数据库,我正在创建一个列系列,如下所示。
CREATE COLUMN FAMILY users
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: username, validation_class: UTF8Type}
{column_name: city, validation_class: UTF8Type, index_type="KEYS"}
];
我使用node.js中的以下内容将数据插入到列族中
var cql = "INSERT INTO App.users(KEY,username,city) VALUES (?,?,?)";
cassandra.execute(cql,[json.username+(new Date().getTime()),json.username,
json.city], function(err, rows) {
if(err) {
console.log(err);
return 1;
}
return 0;
});
这可以正常执行,但假设我使用cassandra-cli并运行
get user where city='NYC';
我收到一个不可用的异常。以下是我在node.js脚本中的CQL查询,该脚本会抛出相同的异常。
var cql = "SELECT notes,heading FROM App.users where city=?";
你知道我做错了什么吗?我在城市专栏上做了二级索引,希望这是正确的。提前谢谢。
答案 0 :(得分:1)
感谢Abhi的建议。该链接非常有用,因此我以下列方式创建了密钥空间,并且它正常工作。
create keyspace App with placement_strategy ='org.apache.cassandra.locator.SimpleStrategy'
and strategy_options = {replication_factor:2};
我已将2台计算机连接到我的cassandra集群,因此replication_factor设置为2.
答案 1 :(得分:0)
也许这是一个密钥空间创建问题。正确检查您的密钥空间创建架构。可能是这个discussion on cassandra user group会给你一个更好的主意