cassandraでスライスクエリが機能する方法は、開始列と終了列を指定することです(limit / isDescendingフラグも指定しますが、ここでは関係ありません)。ユースケースをクエリする1つの方法は、US:CAで始まる最初の複合列とUS:CAで始まる最後の複合列の完全な(複合)列名を渡すことです。ただし、これは事前にはわかりません。
スライスクエリの良いところは、開始列と終了列が実際の列名である必要がないことです。列名は常にソートされるため、スライスクエリの開始列が存在しない場合、cassandraは指定された開始列よりも大きい次の列から開始します。
したがって、クエリの開始列と終了列を作成する必要があります。リンクで説明されているように、複合オブジェクトにはeocビットがあります。このビットはスライスクエリで使用されます。
複合カラムにはいくつかのコンポーネントがあります。各コンポーネントにはeocビットがあります。コンポーネントのこのビットがEqualに設定されている場合、Cassandraは次のコンポーネントの調査に進みます。コンポーネントのこのビットがGREATER_THAN_EQUALに設定されている場合、Cassandraは、それぞれのコンポーネントが探しているコンポーネントと等しくないものが見つかるまで、列を調べ続けます。
そこで、リンクの例を考えてみましょう。3つのコンポーネントを持つ複合コンパレータを持つ列ファミリに対してスライスクエリを実行します。最初のコンポーネントがUSで、2番目のコンポーネントがCAに等しいすべての列を取得する必要があります。
開始列と終了列を作成する必要があります。開始列には2つのコンポーネント(両方ともeocとしてEQUAL)があり、終了列にはEQUALとして最初のコンポーネントがあり、GREATER_THAN_EQUALとして2番目のコンポーネントがあります。これは、最初のコンポーネントがUSで、2番目のコンポーネントがCAであるすべての列に一致します。
このビットをEQUALに設定すると、スライスクエリは、開始コンポーネントが「CA」に等しいことを検出した最初の列に一致します。これは問題ありませんが、Cassandraはスライスクエリの終了列も知っている必要があります。このために、提供されたエンドコンポジットを確認します。
これがお役に立てば幸いです。
編集:説明をより良くするために