クエリ割り当てポリシーを使用して Marklogic 9 を階層化しようとしています。「ドキュメント」データベースに次のようなパーティション名で 2 つの層を (パーティションとして) 作成しました。
- Part1 、パーティション番号は 1、デフォルト パーティション (割り当てられたクエリなし)
- Part2 、パーティション数は 2
データベース内のドキュメントは JSON として保存され、ドキュメントの "DYil" プロパティに従ってそれらを階層化したいと考えています。
データベースに存在する JSON ドキュメントの例:
{
"Yerlesim": "Izmir",
"Ad": "AAA",
"@timestamp": "2018-06-02T21:16:23.647Z",
"SoyAd": "BBB",
"@version": "1",
"DYil": "2010-01-01",
"host": "dhcppc6",
"Yas": 8,
"type": "testA",
}
データベースの構成は、次の手順に従って、Marklogic のドキュメントに従って行われます。
パーティション Part2 に割り当てられたクエリは次のとおりです。
<partition-query-properties xmlns="http://marklogic.com/manage/partition-query/properties">
<partition-number>2</partition-number>
<query>
<cts:json-property-range-query operator="<" xmlns:cts="http://marklogic.com/cts">
<cts:property>DYil</cts:property>
<cts:value xsi:type="xs:date" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">1960-01-01</cts:value>
</cts:json-property-range-query>
</query>
</partition-query-properties>
呼び出して、残りの API を介してパーティションにクエリが正しく割り当てられていることを確認できます。http://localhost:8002/manage/v2/databases/Documents/partition-queries
しかし、データを Marklogic にロードすると、すべてのデータがデフォルト パーティションにロードされ、リバランサを強制的に動作させてもそこにとどまります。
Xquery コンソール クエリは次のとおりです。
cts:search(fn:collection(), cts:json-property-range-query("DYil", "<", xs:date("1960-01-01")), (), (), ts:partition-forests(xdmp:database("Documents"),"Part1"))
Marklogic サイトで提案されているコードを使用して、 cts:query 式cts:json-property-range-query("DYil", "<", xs:date("1960-01-01"))
を XML 形式に変換しました。<root>{cts:json-property-range-query("DYil", "<", xs:date("1960-01-01"))}</root>/node()
エラーログに失敗したログレコードがないため、割り当てられたクエリに問題があると思われますが、問題を特定できません。