レプリカのインデックスが動作していることを外部からテスト/確認することは容易ではありません。レプリカのインデックスはオプションであり、リバランスの後のstale=false
クエリをより速くする最適化であること - 結果の正確さを満たすものではないこと、を忘れないでください。
_type
という名前の公開されていないクエリパラメータがあり、これはデバッグおよびテストにのみ使用されます。そのデフォルト値はmain
で、その他にreplica
を設定値にできます。ここでは、(簡略化のため)2ノードクラスタ上のメイン(default)とレプリカのインデックスに問い合わせる例を以下に示し、(通常の)メインインデックスに問い合わせると次の結果が得られます:
shell> curl -s 'http://localhost:9500/default/_design/test/_view/view1?limit=20&stale=false&debug=true' {"total_rows":20000,"rows":[ {"id":"0017131","key":2,"partition":43,"node":"http://192.168.1.80:9501/_view_merge/","value":"0017131"}, {"id":"0000225","key":10,"partition":33,"node":"http://192.168.1.80:9501/_view_merge/","value":"0000225"}, {"id":"0005986","key":15,"partition":34,"node":"http://192.168.1.80:9501/_view_merge/","value":"0005986"}, {"id":"0015579","key":17,"partition":27,"node":"local","value":"0015579"}, {"id":"0018530","key":17,"partition":34,"node":"http://192.168.1.80:9501/_view_merge/","value":"0018530"}, {"id":"0006210","key":23,"partition":2,"node":"local","value":"0006210"}, {"id":"0006866","key":25,"partition":18,"node":"local","value":"0006866"}, {"id":"0019349","key":29,"partition":21,"node":"local","value":"0019349"}, {"id":"0004415","key":39,"partition":63,"node":"http://192.168.1.80:9501/_view_merge/","value":"0004415"}, {"id":"0018181","key":48,"partition":5,"node":"local","value":"0018181"}, {"id":"0004737","key":49,"partition":1,"node":"local","value":"0004737"}, {"id":"0014722","key":51,"partition":2,"node":"local","value":"0014722"}, {"id":"0003686","key":54,"partition":38,"node":"http://192.168.1.80:9501/_view_merge/","value":"0003686"}, {"id":"0004656","key":65,"partition":48,"node":"http://192.168.1.80:9501/_view_merge/","value":"0004656"}, {"id":"0012234","key":65,"partition":10,"node":"local","value":"0012234"}, {"id":"0001610","key":71,"partition":10,"node":"local","value":"0001610"}, {"id":"0015940","key":83,"partition":4,"node":"local","value":"0015940"}, {"id":"0010662","key":87,"partition":38,"node":"http://192.168.1.80:9501/_view_merge/","value":"0010662"}, {"id":"0015913","key":88,"partition":41,"node":"http://192.168.1.80:9501/_view_merge/","value":"0015913"}, {"id":"0019606","key":90,"partition":22,"node":"local","value":"0019606"} ],
debug=true
パラメータは、マップビューにおいて、二つの行フィールドを追加することに注意してください。ひとつはpartition
で、これはvbucket IDであり、(map関数により出力される)行を生成しているドキュメントが存在する場所を示します。もうひとつはnode
で、これはクラスタ内のどのノードからその行が来たか("local"値はクエリを受信したノードのためのもので、その他はURL)を示しています。
一方、同じクエリをレプリカのインデックス(_type=replica
)に対して実行すると次の結果が得られます:
shell> curl -s 'http://localhost:9500/default/_design/test/_view/view1?limit=20&stale=false&_type=replica&debug=true' {"total_rows":20000,"rows":[ {"id":"0017131","key":2,"partition":43,"node":"local","value":"0017131"}, {"id":"0000225","key":10,"partition":33,"node":"local","value":"0000225"}, {"id":"0005986","key":15,"partition":34,"node":"local","value":"0005986"}, {"id":"0015579","key":17,"partition":27,"node":"http://192.168.1.80:9501/_view_merge/","value":"0015579"}, {"id":"0018530","key":17,"partition":34,"node":"local","value":"0018530"}, {"id":"0006210","key":23,"partition":2,"node":"http://192.168.1.80:9501/_view_merge/","value":"0006210"}, {"id":"0006866","key":25,"partition":18,"node":"http://192.168.1.80:9501/_view_merge/","value":"0006866"}, {"id":"0019349","key":29,"partition":21,"node":"http://192.168.1.80:9501/_view_merge/","value":"0019349"}, {"id":"0004415","key":39,"partition":63,"node":"local","value":"0004415"}, {"id":"0018181","key":48,"partition":5,"node":"http://192.168.1.80:9501/_view_merge/","value":"0018181"}, {"id":"0004737","key":49,"partition":1,"node":"http://192.168.1.80:9501/_view_merge/","value":"0004737"}, {"id":"0014722","key":51,"partition":2,"node":"http://192.168.1.80:9501/_view_merge/","value":"0014722"}, {"id":"0003686","key":54,"partition":38,"node":"local","value":"0003686"}, {"id":"0004656","key":65,"partition":48,"node":"local","value":"0004656"}, {"id":"0012234","key":65,"partition":10,"node":"http://192.168.1.80:9501/_view_merge/","value":"0012234"}, {"id":"0001610","key":71,"partition":10,"node":"http://192.168.1.80:9501/_view_merge/","value":"0001610"}, {"id":"0015940","key":83,"partition":4,"node":"http://192.168.1.80:9501/_view_merge/","value":"0015940"}, {"id":"0010662","key":87,"partition":38,"node":"local","value":"0010662"}, {"id":"0015913","key":88,"partition":41,"node":"local","value":"0015913"}, {"id":"0019606","key":90,"partition":22,"node":"http://192.168.1.80:9501/_view_merge/","value":"0019606"} ],
まったく同じ結果(ID、行ごとのキーと値)を取得することに注意してください。行のnode
フィールドを見て、メインインデックスから取得した結果と比較すると重複していることがわかります。2ノードクラスタの単純な例では理解しやすいでしょう。
どのレプリカvbucketsが各ノードに存在しているかを理解するには、「クエリ応答にデータがない、もしくは間違い(潜在的なサーバの問題による)」を参照してください。