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

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

问题描述:

有没有简单的方法来删除给定数据库上的所有元素范围索引?Marklogic:删除数据库上的所有元素范围索引?

感谢

你可以写一些脚本来做到这一点,例如在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范围索引。

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

+0

P.S.这不是属性名称中的拼写错误:它是XML中的复数,单数是JSON。 – kcoleman

+0

尽可能地尝试管理API(它肯定会在这里工作)。它不需要具有“管理员”角色的用户,而是更有限的“管理 - 管理员”角色,并且您可以通过您最喜欢的HTTP客户端完成任务。 – rjrudin