Marklogic 9 rebalancer не работает с назначенной политикой запросов - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь установить уровень Marklogic 9 с помощью политики назначения запросов.Я создал 2 уровня (как разделы) в базе данных «Документы» с именами разделов:

  • Part1, номер раздела 1, Раздел по умолчанию (без назначенного запроса)
  • Part2, разделномер 2

В базе данных документы хранятся в формате JSON, и я хочу распределить их в соответствии со свойством документов "DYil".

Пример документа JSON, существующего в db:

{
"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, следуя этим инструкциям:

Политика назначения как запрос

Строгая блокировка

DYil индекс как дата

Назначенный запрос для раздела Part2:

<partition-query-properties xmlns="http://marklogic.com/manage/partition-query/properties">
  <partition-number>2</partition-number>
  <query>
    <cts:json-property-range-query operator="&lt;" 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>

Iможно увидеть, что запрос правильно назначен разделу через rest api, вызвав http://localhost:8002/manage/v2/databases/Documents/partition-queries

Но когда я загружаю данные в Marklogic, все данные загружаются в раздел по умолчанию и остаются там, даже если я заставляю rebalancer работать.

Запрос консоли Xquery:

cts:search(fn:collection(), cts:json-property-range-query("DYil", "<", xs:date("1960-01-01")), (), (), ts:partition-forests(xdmp:database("Documents"),"Part1"))

Я преобразовал cts: выражение запроса 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(), как предложено на сайте Marklogic.

В журналах ошибок нет записи журнала, поэтому я подозреваю, чтосуществует проблема с назначенным запросом, но она не может найти проблему.

1 Ответ

0 голосов
/ 06 июня 2018

WRT-запрос, вот код, который я однажды пытался проверить.Запустите в базе данных content, и она проверит запросы на разделы и посмотрит, сколько соответствует каждому из них.

xquery version "1.0-ml";
declare namespace ts = 'http://marklogic.com/xdmp/tieredstorage';

let $xpath := "
declare namespace ts = 'http://marklogic.com/xdmp/tieredstorage';
/ts:partition-query
"
for $pq in xdmp:eval ($xpath, (), <options xmlns='xdmp:eval'><database>{xdmp:schema-database()}</database></options>)
let $query := cts:query ($pq/ts:query/*)
let $number := $pq/ts:partition-number/fn:data ()
let $matched := xdmp:estimate (cts:search (/, $query))
return ('query is: ', $pq, 'cts q is: ', $query, 'p# is: ', $number, '# docs matched is:', $matched)
...