MarkLogic 9.0.8.2
我们的数据库中大约有2000万条XML格式的记录。
为了使用facet,我们在给定的元素上创建了element -rage index。
它工作得很好,所以没有问题。
真正的问题是,我们现在希望在不同的环境中部署相同的代码,比如System Test(ST)、UAT、Production。
在部署代码之前,我们必须确保给定的索引存在。所以我们提前1/2天执行它。
我们注意到,在完全索引完成之前,我们不能部署我们的代码,否则它将开始显示像这样的错误。
<error:code>XDMP-ELEMRIDXNOTFOUND</error:code>
<error:name/>
<error:xquery-version>1.0-ml</error:xquery-version>
<error:message>No element range index</error:message>
<error:format-string>XDMP-ELEMRIDXNOTFOUND: cts:element-reference(fn:QName("","tc"), ("type=string", "collation=http://marklogic.com/collation/")) -- No string element range index for tc collation=http://marklogic.com/collation/ </error:format-string>一旦索引完成,相同的代码将按预期运行。
特别是在ST/UAT中,如果我们得到未完成索引的部分数据,我们就很好。
我们有什么方法可以做到这一点吗?否则我们会浪费太多的时间来等待索引的完成。

每当我们提出依赖于新索引的新特性时,就会发生这种情况
发布于 2020-06-27 00:21:34
仅当范围索引存在且可用时,才能使用它。只有在所有匹配的记录都已建立索引后,它才可用。
您应该更早地创建索引,并在部署使用它们的代码之前留出足够的时间来完成重新索引。也许让你的代码部署依赖于重建索引状态,并且在它完成之前不允许它被部署。
如果您的应用程序的新版本可以在没有索引的情况下工作(值查询而不是范围查询),或者您可以使用返回不准确结果的查询,那么您可以启用/禁用使用这些功能标志的代码部分,或者使用try/catch包装,但是您确实应该在部署周期的早期创建索引。
否则,如果您在没有一个完整且正常运行的环境的情况下执行测试,那么您真正测试的是什么?
https://stackoverflow.com/questions/62597133
复制相似问题