2012-04-20 1 views
3

Я пытаюсь создать индексирование с использованием ниже набора строк.Как создать вторичный индекс в Cassandra Hector API программно

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); 

Но я не могу этого сделать. Фактически я динамически храню данные в столбцах, а также динамически создаю эти столбцы, а затем для лучшего запроса я пытаюсь поместить индекс на некоторые конкретные столбцы. Любое предложение, пожалуйста, как это сделать.

+0

Ну, я понял, как это сделать. – abhi

ответ

5

Его в конечном счете довольно просто. Вам просто нужно создать вторичный индекс, определяя свой столбец. В приведенном выше коде все манипуляции выполняются по индексу объекта, который должен быть создан только при определении. Шаги для добавления индекса являются

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

Я надеюсь, что это поможет.

+4

отсутствует реализация newIndexedColumnDef – gubby

+2

Найден код для newIndexedColumnDef здесь http://www.thydoc.com/cassandra-hector-core/doxygen/classme_1_1prettyprint_1_1hector_1_1api_1_1KeyspaceCreationTest.html –