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的解决方案也是如此,但没有证实。
P.S.这不是属性名称中的拼写错误:它是XML中的复数,单数是JSON。 – kcoleman
尽可能地尝试管理API(它肯定会在这里工作)。它不需要具有“管理员”角色的用户,而是更有限的“管理 - 管理员”角色,并且您可以通过您最喜欢的HTTP客户端完成任务。 – rjrudin