2016-04-19 6 views
0

でダイナミックなフィールドで検索する:はどのように簡単なカサンドラKFを返し、私が持っているDSE検索

create table messages (
    id varchar, 
    headers map<varchar, varchar>, 
    primary key (id)); 

の表は、自動生成されたSolrのインデックスを取得します。 headersフィールドの値は、電子メールヘッダーで想定される値の範囲内になります。しかし、私はヘッダに何かを見つけるために見、またSolrのAPIを使用してその値を取得することはできません

<dynamicField indexed="true" multiValued="false" name="headers*" stored="true" type="TextField"/> 

:私はSolrのは、ヘッダーの次の行を生成していることがわかります。記録:

[email protected]:tpb> SELECT id, headers FROM messages; 

1492cc10-046d-11e6-a332-55ae2575ea1a | {'component-count': '1', 'component-type-0': 'Document-Upload', 'consumer-behalf': 'true', 'date': 'Sun Apr 17 2016 00:22:02 GMT-0700 (PDT)', 'from': '[email protected]0aa4e6dd1', 'message-id': '[email protected]f8a75e811', 'to': '"[email protected]"@32d2a682-af07-4108-a15a-de6f8a75e811', 'transaction-id': '14585b20-046d-11e6-a332-55ae2575ea1a'} 

これらの2つのクエリを実行しているが、これまで私に任意のヘッダー値を返しません(任意のURLエンコードが読みやすくするために逆転されることに注意してください):ヘッダの値によって検索

...select?q=id:1492cc10-046d-11e6-a332-55ae2575ea1a&fl=id,headersconsumer-behalf&wt=json&indent=true 
...select?q=id:1492cc10-046d-11e6-a332-55ae2575ea1a&fl=id,headers*&wt=json&indent=true 

なし得ているようです結果、どちらか

...選択Q = headersdate:?日& FL = ID &重量= JSON &インデント=真 ...選択し、Q = headersconsumer-代わっ:?真& FL = ID &重量= JSON &インデント= true

(どちらも上記のドキュメントと一致する必要があります)。

私は何かが欠けているように感じますが、何が分かりません。 Solrの管理者は、「ヘッダー*」フィールドが存在することを報告し、適切に索引付けされていないかどうかを報告します。

DSEのダイナミックフィールド(Cassandraマップから推測されたもの)によって、どのように返って検索することができますか?

答えて

0

あなたのCQLマップ内のキーは、動的フィールド名を先頭に追加する必要があります

1492cc10-046d-11e6-a332-55ae2575ea1a | {'headerscount': '1', 'headerstype-0': 'Document-Upload',... 

または

1492cc10-046d-11e6-a332-55ae2575ea1a | {'headerscomponent-count': '1', 'headerscomponent-type-0': 'Document-Upload',... 

CQLでマップ名はフォームを持っていることをお勧めします「_」ダイナミックフィールドは 'headers_component-type-0'のようになります。

+0

カサンドラはデータが「ヘッダー」マップ内にあることを知っています。スキーマはCassandraによって作成されたので、名前に列の名前を付けることができる必要がありますインデックス作成のために提出するとき、Solrフィールドの –

関連する問題