如何增加 N1QL 索引扫描超时?
How do I increase the N1QL index scan timeout?
作为 ETL 过程的一部分,我试图从 Couchbase 存储桶 (Couchbase Enterprise 4.5) 中读取所有文档密钥 ID。这个桶可能有数千万个文档。为了对此进行测试(在这个阶段,我只是想看看这种方法是否足够快以满足我们的需求),我使用如下代码设置了一个较大的 serverSideTimeout 值:
final N1qlParams n1qlParams = N1qlParams.build().serverSideTimeout(1L, TimeUnit.DAYS);
aBucket.query(N1qlQuery.simple("select meta(b).id from `my_bucket` as b", n1qlParams))
这开始执行,我的订阅者开始从查询中取回 ID,但随后出现此错误:
{"msg":"Index scan timed out - cause: Index scan timed out","code":12015}
我对它需要进行索引扫描并不感到惊讶,因为我实际上是在尝试读取主索引中的所有内容。 在评论中提到有调整索引扫描超时值的设置,但我找不到这个设置在哪里。我查看了 N1qlParams 对象、CouchbaseEnvironment 以及 Couchbase Admin UI 中集群设置的索引设置部分,但我无法在任何地方找到此设置。 如何为我希望进行完整索引扫描的查询将索引扫描超时设置为更长的值?
如 Couchbase forum post 中所见,需要将内容为 {"indexer.settings.scan_timeout": <new_timeout_in_milliseconds>}
.
的 HTTP POST 发送到 http://<server>:9102/settings
似乎有许多低级索引服务设置可以使用此 /settings
页面进行配置;发送 GET
将用它们的当前值检索它们。
作为 ETL 过程的一部分,我试图从 Couchbase 存储桶 (Couchbase Enterprise 4.5) 中读取所有文档密钥 ID。这个桶可能有数千万个文档。为了对此进行测试(在这个阶段,我只是想看看这种方法是否足够快以满足我们的需求),我使用如下代码设置了一个较大的 serverSideTimeout 值:
final N1qlParams n1qlParams = N1qlParams.build().serverSideTimeout(1L, TimeUnit.DAYS);
aBucket.query(N1qlQuery.simple("select meta(b).id from `my_bucket` as b", n1qlParams))
这开始执行,我的订阅者开始从查询中取回 ID,但随后出现此错误:
{"msg":"Index scan timed out - cause: Index scan timed out","code":12015}
我对它需要进行索引扫描并不感到惊讶,因为我实际上是在尝试读取主索引中的所有内容。
如 Couchbase forum post 中所见,需要将内容为 {"indexer.settings.scan_timeout": <new_timeout_in_milliseconds>}
.
http://<server>:9102/settings
似乎有许多低级索引服务设置可以使用此 /settings
页面进行配置;发送 GET
将用它们的当前值检索它们。