gpt4 book ai didi

dynamic - 如何以编程方式在 Cassandra Hector API 中创建二级索引

转载 作者:行者123 更新时间:2023-12-02 12:08:22 24 4
gpt4 key购买 nike

我一直在尝试使用下面的行集创建索引。

 KeyspaceDefinition fromCluster = cluster.describeKeyspace(KEYSPACE);
ColumnFamilyDefinition cfDef = fromCluster.getCfDefs().get(0);
BasicColumnFamilyDefinition columnFamilyDefinition = newBasicColumnFamilyDefinition(cfDef);
BasicColumnDefinition columnDefinition = new BasicColumnDefinition();
columnDefinition.setName(StringSerializer.get().toByteBuffer("A_NO"));
columnDefinition.setIndexName("A_NO_idx");
columnDefinition.setIndexType(ColumnIndexType.KEYS);
columnDefinition.setValidationClass(ComparatorType.UTF8TYPE.getClassName());
columnFamilyDefinition.addColumnDefinition(columnDefinition);

但我无法这样做。实际上,我正在动态地将数据存储在列中,并动态创建这些列,之后为了更好的查询目的,我尝试在某些特定列上放置索引。任何建议请如何做到这一点。

最佳答案

它最终非常简单。您只需在定义列族时创建二级索引即可。在上面的代码中,所有操作都是在对象索引上完成的,该索引必须在定义时创建。添加索引的步骤为

    List<ColumnDef> columns = new ArrayList<ColumnDef>();
columns.add(newIndexedColumnDef("columnName", "UTF8Type"));
List<ColumnDefinition> columnMetadata = ThriftColumnDef
.fromThriftList(columns);
cdefs.add(cf_def); //cf_def is your columnfamily definition

辅助方法代码来自KeyspaceCreationTest

    public ColumnDef newIndexedColumnDef(String     column_name, String     comparer){
ColumnDef cd = new ColumnDef(se.toByteBuffer(column_name), comparer);
cd.setIndex_name(column_name);
cd.setIndex_type(IndexType.KEYS);
return cd;
}

可以找到比较器的引用here

希望对你有帮助。

关于dynamic - 如何以编程方式在 Cassandra Hector API 中创建二级索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10240382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com