删除路径范围索引时出错

时间:2018-03-07 21:02:25

标签: indexing marklogic marklogic-8

我在尝试删除非字符串路径范围索引时遇到异常: -

  

ADMIN-NOSUCHITEM :(错误:FOER0000)范围索引不存在。

但我可以在数据库中看到该索引。

我使用delete-range-path-index查询来删除索引。这发生在非字符串索引中。

以下查询用于删除路径范围索引: -

import module namespace admin = "http://marklogic.com/xdmp/admin"
      at "/MarkLogic/admin.xqy";
let $database := xdmp:database("test")
let $admin-config := admin:get-configuration()
for $index in admin:database-get-range-path-indexes($admin-config, $database)
return admin:database-delete-range-path-index($admin-config, $database, $index)

是的,我使用xdmp:set()函数来更新admin配置,以便后续调用可以使用更新的配置。但仍然得到相同的错误,当它试图删除非字符串索引时会发生这种情况。当我尝试只删除单个非字符串索引时,我得到了相同的异常。

我们使用的是marklogic版本: - 8.0-5.9

1 个答案:

答案 0 :(得分:0)

我努力使用CentOS 7.4(使用https://github.com/grtjn/mlvagrant)和MarkLogic 8.0-5.9按照您的指定(但对于RH7)来启动Vagrant vm,但我无法重现您的问题。我运行了以下命令,返回时没有错误:

import module namespace admin = "http://marklogic.com/xdmp/admin"
      at "/MarkLogic/admin.xqy";

let $database := xdmp:database()
let $admin-config := admin:get-configuration()
let $admin-config := admin:database-add-range-path-index(
  $admin-config,
  $database,
  admin:database-range-path-index(
    $database,
    "int",
    "/x" || xdmp:random(),
    "http://marklogic.com/collation/",
    fn:false(),
    "reject"
  )
)
return
  admin:save-configuration-without-restart($admin-config)

;

import module namespace admin = "http://marklogic.com/xdmp/admin"
      at "/MarkLogic/admin.xqy";

let $database := xdmp:database()
let $admin-config := admin:get-configuration()
let $admin-config := admin:database-delete-range-path-index(
  $admin-config,
  $database,
  admin:database-get-range-path-indexes($admin-config, $database)
)
return
  admin:save-configuration-without-restart($admin-config)
;

import module namespace admin = "http://marklogic.com/xdmp/admin"
      at "/MarkLogic/admin.xqy";

let $database := xdmp:database()
let $admin-config := admin:get-configuration()
return
  admin:database-get-range-path-indexes($admin-config, $database)

您能详细说明如何创建范围路径索引吗?

HTH!