2016-10-07 86 views
1

我使用Riak作爲用Python實現的圖形數據庫的鍵 - 值存儲後端。Riak搜索2無索引存儲桶

我創建了一個名爲nodes的定製search schema。 我創建並激活了一個存儲桶類型nodes,其中search_index屬性設置爲nodesdatatype屬性設置爲map

我插入以下數據到水桶default(與鬥式nodes):

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:* 

看來,我的文件不被索引。

我也嘗試將search_type屬性設置爲nodes在存儲桶default上,但我得到了相同的結果。

參數search是在配置文件(/etc/riak/riak.conf)並且被安裝在OpenJDK 7中設置爲on

我不知道我在做什麼錯,如果有人可以幫助我,在此先感謝。

回答

1

首先,您應該考慮到Riak會自動添加後綴_set,這樣您就不必爲自己的名字命名爲​​,而是type。否則,您將不得不查詢type_set_set:*而不是type_set:*

其次,根據Data Type Schemas,嵌入式模式(與頂級模式相反)必須使用動態字段。顯然,Riak預先填寫了頂層地圖的一些內部標識符的字段名稱。不幸的是,這也意味着你不能索引一組索引而不索引另一組索引。

我跑了一些測試,發現<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