2016-10-07 5 views
1

私はRiakをPythonで実装されたグラフデータベースのキーバリューストアバックエンドとして使用しています。Riak Search 2 not indexing bucket

search schemanodesというカスタムを作成しました。 バケツタイプnodesを作成し、search_indexプロパティをnodesdatatypeプロパティをmapに設定しました。

Iは、(バケットタイプnodesと共に)バケットdefaultに以下のデータを挿入:

key: node1 
value: { 
    "type_set": {"n1"}, 
    "foo_set": {"bar", "baz"} 
} 

はNB:データを自動的に地図データ型に変換されます。

私が正しくデータをフェッチすることができますが、私は、次の全文検索を試してみましたが、何の文書が返されない:

type_set:n1 
type_set:*n1* 
type_set:* 
foo_set:* 
_yz_rk:node1 
_yz_rk:* 

私の文書がインデックス化されていないようです。

バケットdefaultsearch_typeプロパティをnodesに設定しようとしましたが、同じ結果が得られました。

設定ファイル(/etc/riak/riak.conf)のパラメータsearchonに設定され、OpenJDK 7がインストールされています。

誰かが私を助けることができれば、私は間違って何をしているのか分かりません。

答えて

1

まず、Riakが自動的に接尾辞_setを追加するので、あなたの名前を​​ではなくtypeとする必要があります。そうでなければ、type_set:*の代わりにtype_set_set:*を照会する必要があります。

第2に、Data Type Schemasによれば、(最上位レベルのものとは対照的に)埋め込みスキーマは、動的フィールドを使用しなければならない。どうやらRiakはフィールド名の先頭にトップレベルマップの内部識別子を付加しているようです。残念なことに、これはまた、他のものにインデックスを付けずに1つのセットにインデックスを付けることもできないことを意味します。

私はいくつかのテストを実行して<dynamicField name="*_set" type="string" indexed="true" stored="true" multiValued="true"/>がうまく動作することを確認しましたが、<dynamicField name="*type_set" type="string" indexed="true" stored="true" multiValued="true"/>はありません。

+0

本当に私はドキュメントを誤解しています。すべてがうまくいきます。 – linkdd