Marklogic:删除数据库中的所有元素范围索引?

Marklogic: Delete all element range indexes on a database?

有没有一种简单的方法可以删除给定数据库上的所有元素范围索引?

谢谢

您可以编写一些脚本来执行此操作,例如在 JavaScript 中,您需要从查询控制台执行该脚本:

'use strict';

const admin = require('/MarkLogic/admin');
const config = admin.getConfiguration();
const db = xdmp.database('Documents');

const indexes = admin.databaseGetRangeElementIndexes(config, db);
const newConfig = admin.databaseDeleteRangeElementIndex(config, db, indexes);
admin.saveConfiguration(newConfig);

'All Range Indexes have been removed.'

以上内容遍历了 'Documents' 数据库的所有元素范围索引并将其删除 - 包括 DLS 的任何预定义范围索引。

我相信您可以使用 REST 管理 API 方法 PUT /manage/v2/databases/{dbid}/properties 来做到这一点。如果您传递 range-element-indexes 属性 为空的有效载荷,我认为它会删除任何现有的有效载荷。

看看以下内容:

http://docs.marklogic.com/REST/PUT/manage/v2/databases/[id-or-name]/properties

您希望为 XML 使用类似于以下内容的有效负载:

<database-properties xmlns="http://marklogic.com/manage">
<range-element-indexes/>
</database-properties>

或者像这样 JSON:

{ "range-element-index": [] }

不过要小心:这是一把锋利的工具。您还将删除预定义的索引,例如 DLS 的索引。我认为 Tamas 的解决方案也是如此,但没有证实。