无法创建元素范围索引。 错误无效的强制范围-元素索引xmlns =“ http://marklogic.com/xdmp/database”> ......作为元素(配置)
我数据库中有超过1亿个文档需要索引“ tr:ModifiedDate”。
<?xml version="1.0" encoding="UTF-8"?>
<mdra:Record Type="TR" xmlns:mdra="http://dvtech.com/mdra/record">
<tr:Raw xmlns:tr="http://dvtech.com/mdra/record/tr">
<tr:History>
<tr:ModifiedDate>2009-03-18T09:07:23.000-04:00</tr:ModifiedDate>
<tr:DrolsNdxDate>2002-07-05T18:33:26.000-04:00</tr:DrolsNdxDate>
</tr:History>
<tr:TrlType>
<tr:Code>0</tr:Code>
</tr:TrlType>
</tr:Raw>
</mdr:Record>
我在tr:ModifiedDate上创建了element-range-index,但是无法创建它。错误显示强制无效。我不知道是什么原因造成的。
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin"
at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("IAD")
let $rangespec := admin:database-range-element-index("dateTime",
"http://dvtech.com/mdra/record/tr",
"ModifiedDate",
"http://marklogic.com/collation/",
fn:false() )
return
admin:save-configuration($rangespec)
答案 0 :(得分:3)
管理库围绕$ config展开。您需要更新该配置,然后保存该配置,而不仅仅是一个索引定义。您可以使用admin:database-add-range-element-index
来执行此操作。正确的做法是这样的:
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin"
at "/MarkLogic/admin.xqy";
let $config := admin:get-configuration()
let $dbid := xdmp:database("IAD")
let $rangespec := admin:database-range-element-index(
"dateTime",
"http://dvtech.com/mdra/record/tr",
"ModifiedDate",
"http://marklogic.com/collation/",
fn:false()
)
let $config := admin:database-add-range-element-index($config, $dbid, $rangespec)
return
admin:save-configuration($config)
您可以通过一次调用该函数来添加多个范围索引。
我还要提及一些部署工具,这些工具可以帮助将范围索引部署到MarkLogic中。一个很好的例子是ml-gradle。
HTH!