Предположим, что я есть таблица ClientHeaders со следующими столбцамиHector slicequery «где» пункт
| UUID | Cliend_id | IP | Country | Date |
где UUID является первичным ключом.
Я хочу использовать этот запрос:
select * from ClientHeaders where Client_id = "123";
Как я могу сделать это с помощью slicequery Гектора.
Я знаю, что если бы это было так: select * from ClientHeaders where UUID= "123";
После сделал бы задачу:
sliceQuery.setColumnFamily("ClientHeaders");
sliceQuery.setKey("123");
sliceQuery.setRange("", "", false, 5);
QueryResult<ColumnSlice<String, String>> result = sliceQuery.execute();
потому что UUID является первичным ключом так sliceQuery.setKey("123");
работает с первичным ключом, Есть ли способ, я могу выполнять функциональные возможности where из не первичного ключа?
Эй .. спасибо за ответ .. Но я получаю эту ошибку 'Метод createIndexedSlicesQuery (пространство ключей, Serializer, Serializer , Serializer ) в типе HFactory не применим для аргументов (String, StringSerializer, StringSerializer, BytesArraySerializer) ' –
Я решил вышеупомянутую ошибку, используя« Keyspace keyspace = HFactory.createKeyspace («MyKeyspacename», кластер); «Но теперь« indexedSlicesQuery.execute(); 'is throwing exception:' me.prettyprint.hector.api.exceptions.HInvalidRequestException: InvalidRequestException (почему: нет индекса в столбце индекса с операторным EQ) ' –
да, для этого вам нужно создать индекс для этого имени столбца , например. Обновление столбца семейства ClientHeaders с компаратором = UTF8Type и column_metadata = [{имя_столбца: client_id, validation_class: LongType, index_type: KEYS}]; Примечание: также укажите свои имена требуемых столбцов в запросе обновления и/или выполните соответствующие изменения согласно требованию –