UDTとタプルのクエリー例
UDTクエリーの例。 UDTはタプルの特殊型です。
ネストされたタプルとUDTをCQLリストおよびセット内でクエリーできます。以下の例に示したUDTはタプルの特殊型です。は、UDTに適用されます。
注: CQL SELECT句内のUDTカラム全体を選択することがサポートされています。UDTの各フィールドを選択する操作はサポートされていません。
その他の例については、DataStax開発者によるブログ投稿「DSE SearchでのタプルとUDTサポート」に記載しています。
フィールドのクエリー
{!tuple}address.street:sesame
動的フィールドのクエリー
<dynamicField name="user.position_*" type="text" indexed="true" stored="true"/>
{!tuple}user.position_day1:second
{!tuple}user.position_day2:first
コレクションのクエリー
{!tuple}user.hobbies:swim
ユーザーと名前がともにUDTであるネストされたタプル/UDTのクエリー
{!tuple}user.name.firstname:Sam
UDT/タプルの各フィールド全体のクエリー
({!tuple}father.name.firstname:Sam AND {!tuple}mother.name.firstname:Anne)
複数の条件を持つUDT/タプルの各フィールドのクエリー
複数の条件を満たすタプルを見つけることができます。例:
{!tuple}address.residents.field1:Alice AND address.residents.field2:Smith
注: 構文の相違点は、タプル全体またはタプル内で検索するかを指定するものです。
{!tuple}condition1 AND {!tuple}condition2 AND {!tuple}conditionN
は、すべての条件を満たすが、同じ単一のタプル/UDTで満たされるとは限らないドキュメントを検索します。{!tuple}condition1 AND condition2 AND conditionN
は、すべての条件を満たすタプル内のドキュメントを検索します。
ネストされたタプルとUDTのクエリー
ネストされたタプルとUDTをクエリーするには、同じドット表記とタプル・クエリー・パーサーを使用します。UDTはタプルを特殊化したものであるため、タプルとUDTにはタプル・クエリー・パーサーを使用します。この例では、ドット表記はaddress.residentをUDTとして識別します。
例に示したネストされた
address.residents
タプルでは、「Alice
」という名の居住者の場所をクエリーできます。{!tuple}address.residents.field1:Alice
以下の例では、「
Alice
」という名と「Smith
」という姓の居住者の場所をクエリーできます。{!tuple}address.residents.field1:Alice AND address.residents.field2:Smith
注: タプルとUDTは、ネストされたドキュメントとして内部でモデル化されています。これらをクエリーするには、Solrブロック結合が内部使用されます。親は
_parent_=true
フィールドで識別されます。子は_parent_=false
で識別されます。否定クエリーや空のフィールド・クエリーなど、特定のクエリー・タイプの場合は、_parent_
フィールドを使用しなければならない場合があります。空の名のクエリー
否定(-)や包含(+)演算子は、{!tuple}ディレクティブの前に配置する必要があります。
-{!tuple}_parent_:false AND user.name.firstname:[* TO *]
否定クエリー
否定クエリーでは以下の構文が使用されます。
select * from demo where solr_query='-{!tuple}name.firstname:*'
複数の条件を持つ否定クエリーは、Solrルールに従う必要があります。以下の構文を使用します。{!tuple}address.street:* NOT (address.street:sesame AND address.number:32)