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

时间:2017-08-02 13:58:28

标签: marklogic

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

由于

2 个答案:

答案 0 :(得分:1)

您可以编写一些脚本来执行此操作,例如在需要从Query Console执行的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.'

以上内容涵盖了'文档'的所有元素范围索引。数据库并删除它们 - 包括任何预定义的DLS范围索引。

答案 1 :(得分:1)

我相信您可以使用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的解决方案也是如此,但没有证实。