Согласно документации DSE, поиск DSE не поддерживает счетчик столбцы.
У меня есть базовый CF с (ckey, count), где count
— счетчик.
create table change_count ( ckey text, count counter) primary key (ckey)
Естественно, dsetool create_core ks.change_count
не работает на этом CF, потому что есть счетчик, с "Индексы Solr не поддерживаются на счетчиках!" ошибка.
Итак, я создаю документ схемы Solr вручную:
<?xml version="1.0" encoding="UTF-8"?>
<schema name="autoSolrSchema" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.StrField" name="StrField" />
</types>
<fields>
<field indexed="true" multiValued="false" name="ckey" stored="true" type="StrField" />
</fields>
<uniqueKey>(ckey)</uniqueKey>
</schema>
, сохраните его в файл и используйте dsetool create_core ks.change_count schema=/tmp/1.xml
, но я все равно получаю то же самое «Индексы Solr не поддерживаются на счетчиках!» ошибка.
Итак, первый вопрос: есть ли способ усилить DSE и иметь CF со счетчиком и индексы solr для столбцов, которые не являются счетчиками.
Если это невозможно, то я хотел бы иметь какие-либо предложения о том, как решить проблему представления данных. Допустим, «ckey» — это «час эпохи», а count — просто счетчик некоторых событий, которые произошли в течение этого часа. Тип счетчика для атомарных приращений, конкуренция на этом CF будет очень высока, даже если я использовал легковесные транзакции. Индекс Solr существует, потому что я хочу выполнять поиск по диапазону и так далее.
Я могу создать 2 CF:
create table change_count ( ckey text, count counter) primary key (ckey)
create table change_count_idx ( ckey text ) primary key (ckey)
Затем я могу индексировать Solr change_count_idx
, но считать в таблице change_count
, убедившись, что у меня есть одинаковые ключи в обоих. Затем я могу получить совпадающие ключи с помощью Solr и фактические данные с помощью Cassandra, выполняя соединение на стороне клиента. Но потенциально это могут быть тысячи поисковых запросов PK, и я не думаю, что производительность выдержит большие диапазоны.