我创建了一个键空间并使用一些列名创建了列族。并且还以编程方式在该键空间中添加了记录。现在我要在keyapce中添加一个coulmn并添加新记录。这是成功的......但是当使用equals运算符搜索新的列字段值时,我得到以下异常me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException(why:No indexed columns present in by-columns clause with "equals" operator)
我认为有些行没有新的列字段......这是一个问题吗?..你能不能请任何人帮助我如何解决这个问题?....在Normal Relational数据库中我们如果在表中添加任何新列,可以向现有记录添加空值...无论如何我们可以用cassandra来解决这个问题吗?....我的最终结果应该是我能够搜索到记录与新列字段....
答案 0 :(得分:0)
是的...您获得异常的原因是非indexed
中新添加的列执行相等或类似的操作;在改变列族时,你必须写出例如。
column_metadata = [{column_name : 'username',
validation_class : UTF8Type,
index_name : 'username_idx',
index_type : 0}]
所以你的最终修改查询就像这样
UPDATE COLUMN FAMILY your_CF_name with column_type = 'Standard'
and comparator = 'UTF8Type'
and default_validation_class = 'UTF8Type'
and key_validation_class = 'UTF8Type'
and column_metadata = [
{column_name : 'your_all_existing_columns',
validation_class : your_all_existing_validation_class,
index_name : 'user_defined_name',
index_type : 0},
.
.
.
{column_name : 'your_new_additional_column',
validation_class : your_validation_class,
index_name : 'user_defined_name',
index_type : 0}];