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

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

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

たとえば、
SELECT id, date, value FROM keyspace.table WHERE id = 'series1' AND solr_query='value:bar*';
CQLパーティション・キー制限は、パーティション・キーが完全に指定されている場合に限り、機能します。
CREATE TABLE vtbl (k1 text, k2 text, value text, PRIMARY KEY (k1, k2));
たとえば、上のテーブルとともに、以下のようなクエリーは使用しないでください。
SELECT * FROM vtbl WHERE k1 = '50' AND solr_query='value:*'
部分的に指定されている複合パーティション・キー、"fq":"k1:50"に対してフィルター・クエリーを使用します。
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ファイル内で宣言します。

結合を使用しない場合の_partitionKeyのオーバーライド

結合に対しては、特殊な_partitionKeyフィールドが内部で使用されます。結合を使用する予定がない場合は、indexedプロパティとdocValuesプロパティについてのみschema.xmlファイルでこのフィールドの宣言をオーバーライドできます。

_partitionKeyフィールドのインデックスが作成されないようにするには、indexedfalseに設定します。
<field name="_partitionKey" type="string" indexed="false"/>
_partitionKeyフィールドに対してdocValuesを構築しないようにするには、docValuesfalseに設定します。
<field name="_partitionKey" type="string" docValues="false"/>