DSE documentationによれば、DSE Searchはカウンタ列をサポートしていません。DSEのCassandraカウンタとSolrインデックスを組み合わせる最良の方法
私は基本的なCFを(ckey、count)としています(count
はカウンタです)。カウンターがあるので、「Solrのインデックスがカウンターではサポートされていません!」と
create table change_count (ckey text, count counter) primary key (ckey)
当然、dsetool create_core ks.change_count
は、このCFに失敗しますエラー。
OK、私は手動での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
を使用しますが、私はまだ同じを取得しますエラー。
最初の質問は、DSEを強化し、カウンタを持つCFを持ち、カウンターではない列のsolrインデックスを持つ方法です。
可能であれば、私はデータの表現の問題を解決する方法を提案したいと思います。 「ckey」が「エポックタイム」であり、カウントがその時間に発生したイベントのカウンタに過ぎないとしましょう。軽量トランザクションを使用していても、原子増分のカウンタタイプ、この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検索である可能性があり、パフォーマンスが広範囲に生き残るとは考えていません。
カウンタ列を持つテーブルでは、すべての*非カウンタ*列がプライマリキーの一部でなければなりません。 –
これはソリューションレベルでのご質問に対する回答ではありませんので、ここでそれを変更しました。それは読者のための思い出です。 DSEのチェックはテーブルのメタデータと照合され、プライマリキーだけをインデックスに登録したくないと仮定します。 –
@CalebRackliffeしかし、私はプライマリキーだけをインデックスにし、Solrを使ってCassandraでサポートされていないクレイジークエリを実行することができます。それはこの特定のテーブルの背後にあるアイデアです。 –