我正在尝试创建一个脚本来从配置文件添加元素-属性-范围-索引和元素-范围-索引。 请在下面找到相同的脚本。我可以添加元素范围索引,但无法通过脚本或通过管理控制台 UI 添加元素属性范围索引。
注意:我已经交叉检查了,没有可用的重复索引。我有新创建的.仍然面临同样的问题。
import module namespace admin :="http://marklogic.com/xdmp/admin"
at "/MarkLogic/admin.xqy"
let $dbid := xdmp:database("hrhub-content")
let $config :=admin:get-configuration()
let $rangespec:= admin:database-range-element-attribute-index("string","www.aetna.com/hrhub/nm","plocalname","","pname","",fn:false())
return
let $new-index := admin:database-add-range-element-attribute-index($config,$dbid,$rangespec)
return admin:save-configuration-without-restart($new-index)
错误消息: ADMIN-DUPLICATECONFIGITEM: (ERR:FOER0000( 数据库 资源"HRHUB-content"已经内容数据库"元素- 属性-范围-索引">
脚本包含一些语法错误。我已经尝试过以下内容,它对我有用:
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $dbid := xdmp:database("hrhub-content")
let $config := admin:get-configuration()
let $rangespec:= admin:database-range-element-attribute-index("string", "www.aetna.com/hrhub/nm", "plocalname", "", "pname", "http://marklogic.com/collation/", fn:false())
return
let $new-index := admin:database-add-range-element-attribute-index($config,$dbid,$rangespec)
return admin:save-configuration-without-restart($new-index)
我更改的内容:
- 导入将
:=
更改为仅=
。 - 导入最后需要
;
。 - 如果标量类型是"字符串",
admin:database-range-element-attribute-index
需要一个排序规则。
我刚刚尝试了瓦格纳粘贴的代码,其中一项更改是
let $dbid := xdmp:database("*Documents*")
它奏效了。当我重新运行代码时,我收到错误,您看到的是ADMIN-DUPLICATECONFIGITEM,这是有道理的,因为索引已经存在。您可能希望通过此代码检查索引是否存在 -
xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
let $dbid := xdmp:database("Documents")
let $config := admin:get-configuration()
return admin:database-get-range-element-attribute-indexes(
$config,
$dbid)