パーティション・キーの識別

Solrクエリーも使用する際にパーティション・キーで結果をフィルター処理するための制限事項とガイドライン。

Solr CQLクエリーでは、1つのパーティション・キーに制限することができます。パーティション・キー制限は、_partitionKeyのインデックスが明示的に作成されているか、データベース・パーティション・キーのコンポーネントがすべて明示的にスキーマに含まれている場合に限り、機能します。スキーマで結合を使用しない場合、_partitionKeyをオーバーライドできます。

例:
SELECT id, date, value FROM keyspace.table WHERE id = 'series1' AND solr_query='value:bar*';
CQLパーティション・キー制限は、パーティション・キーが完全に指定されている場合に限り、機能します。たとえば、以下のテーブルの場合を考えてみます。
CREATE TABLE vtbl (k1 text, k2 text, valuetext, PRIMARYKEY ((k1, k2)))
以下のようなクエリーは使用しないでください。
SELECT * FROM vtbl WHERE k1 = '50' AND solr_query='value:*'
部分的に指定されている複合パーティション・キーに対してフィルター・クエリーを使用します。
SELECT * FROM valuetable WHERE solr_query='{"q":"value:*", "fq":"k1:50"}'

Solrトークン関数の使用

Solr CQLクエリーでは、トークン関数の限定的な使用をサポートしています。トークン関数を使用すると、クエリー対象ノードを制限する限定的な検索が可能になり、レイテンシーを低減できます。
注: Solrトークン関数の使用は上級ユーザーのみとし、特定のユース・ケースに限りサポートされています。
例:
SELECT id, value FROM keyspace.table WHERE token(id) >= -3074457345618258601 AND token(id) <= 3074457345618258603 AND solr_query='id:*'
オープンな範囲を使用した例:
SELECT id, value FROM keyspace.table WHERE token(id) >= 3074457345618258604 AND solr_query='id:*'
Solr CQLクエリーでのトークン関数の使用には以下の制約事項が適用されます。
  • token()は、route.rangeまたはroute.partitionとともに使用できません。
  • Wrapping token()範囲はサポートされていません。
  • 指定されたtoken()範囲が1つのノードに所有されていなければなりません。範囲が複数のノードにまたがることはできません
  • DSEはSolrのシングルパス・クエリーを使用するため、検索スキーマでで宣言されているフィールドのみがクエリー結果で返されます。インデックスを作成する必要はないが、トークン制限付きクエリーを使用して取得する必要があるカラムがある場合は、そのカラムをインデックスなしの格納されているフィールドとしてschema.xmlファイル内で宣言します。