为什么批量加载会导致Couchbase Server上的索引?

时间:2014-10-10 07:02:52

标签: java couchbase

我正在从Couchbase存储桶读取批量数据并将此批量数据插入另一个存储桶。我正在使用couchbase java sdk 1.4.4版本。使用视图读取整个数据。

我正在使用set api来插入数据。将整个数据插入Couchbase后,我将关闭Couchbase客户端。

数据被插入到Couchbase中,但一旦插入,就会开始索引我可以从沙发基础Web控制台看到的数据。根据沙发基础文档,它应该在我们根据STALE参数读取数据时开始编制索引。

我面临的另一个问题是,在我的java应用程序控制台上,它会显示很多警告,直到索引没有完成。

jvm 1    | WARN  [OperationFuture] Exception thrown wile executing com.couchbase.client.CouchbaseClient$15.operationComplete()
jvm 1    | java.lang.IllegalStateException: Shutting down
jvm 1    |      at net.spy.memcached.MemcachedClient.broadcastOp(MemcachedClient.java:298) ~[spymemcached-2.11.4.jar:2.11.4]
jvm 1    |      at net.spy.memcached.MemcachedClient.broadcastOp(MemcachedClient.java:292) ~[spymemcached-2.11.4.jar:2.11.4]
jvm 1    |      at com.couchbase.client.CouchbaseClient.observe(CouchbaseClient.java:1670) ~[couchbase-client-1.4.4.jar:1.4.4]
jvm 1    |      at com.couchbase.client.CouchbaseClient.observePoll(CouchbaseClient.java:1803) ~[couchbase-client-1.4.4.jar:1.4.4]
jvm 1    |      at com.couchbase.client.CouchbaseClient$15.onComplete(CouchbaseClient.java:1443) ~[couchbase-client-1.4.4.jar:1.4.4]
jvm 1    |      at com.couchbase.client.CouchbaseClient$15.onComplete(CouchbaseClient.java:1412) ~[couchbase-client-1.4.4.jar:1.4.4]
jvm 1    |      at net.spy.memcached.internal.AbstractListenableFuture$1.run(AbstractListenableFuture.java:117) ~[spymemcached-2.11.4.
jvm 1    |      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_21]
jvm 1    |      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [na:1.7.0_21]
jvm 1    |      at java.util.concurrent.FutureTask.run(FutureTask.java:166) [na:1.7.0_21]
jvm 1    |      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_21]
jvm 1    |      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_21]
jvm 1    |      at java.lang.Thread.run(Thread.java:722) [na:1.7.0_21]  

问题:
为什么在阅读视图之前开始创建索引?
为什么控制台上会出现警告消息?

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

如Couchbase服务器中所述,手动索引会自动运行。以下是自动索引更新的默认参数。

{
     "updateInterval":5000,
     "updateMinChanges":5000,
     "replicaUpdateMinChanges":5000 
}

通过这些设置,系统将每5秒检查一次,看看是否有5000次突变。如果这是真的,它将开始索引。一旦批量加载代码执行5000 设置,索引就会开始。

您可以在manual中了解有关自动索引更新的更多信息。