タプルとUDTのネスト

タプルとUDTをCQLリストおよびセットにネストする例。

DSE Searchでは、ネストしたタプルとUDTのクエリーをサポートしています。たとえば、タプルとUDTをCQLリストおよびセット内にネストして宣言できます。タプルとUDTをマップまたはキー内にネストすることはできません。

データの挿入

CQLを使用して挿入されるデータは、DSE Searchによって自動的に認識され、その他のデータと同様にインデックスが作成されます。ただし、HTTPインターフェイスを使用して挿入されるデータには、JSONで表現される文字列形式のタプル/UDTフィールドが必要です。例:

{"alternativeAddressCollection":"[{\"city\":\"NY\", \"street\":\"sesame1\"}, {\"city\":\"SF\", \"street\":\"sesame2\"}]" , "mainAddress":"{\"street\":\"Sesame\", \"city\":\"Atlanta\"}}

Addressタプルを使用して型を作成します

CREATE TYPE Address (street text, city text, residents set<tuple<text, text>>)

Addressタプルを使用してテーブルを作成します

CREATE TABLE Location (id text, address Address)

SolrスキーマでTupleFieldクラスを宣言します。

UDTはタプルの特殊型です。TupleFieldクラスはUDTにもタプルにも適用します。
<fieldType class="com.datastax.bdp.search.solr.core.types.TupleField"
name="TupleField"/>

Solrスキーマでは、TupleFieldおよびネストしたTupleFieldを宣言します

<field name="address" type="TupleField" indexed="true" stored="true"/>
<field name="address.street" type="text" indexed="true" stored="true"/>
<field name="address.city" type="text" indexed="true" stored="true"/>
<field name="address.residents" type="TupleField" indexed="true" stored="true" multiValued=”true”/>
<field name="address.residents.field1" type="text" indexed="true" stored="true"/>
<field name="address.residents.field2" type="text" indexed="true" stored="true"/>

residentsでネストされたタプルはTupleFieldです。ネストされた各フィールドはドットを使用して各親タプルまたはUDTで連結されています。

参照