每次应用程序重新运行时,CouchBase 都会尝试创建索引
CouchBase Tries to Create Indexes Every Time When Application Rerun
我使用 Java SDK 3.0.3
作为 CouchBase 客户端。使用以下 @Configuration
处理索引配置
@Bean
public void createIndexes() {
QueryIndexManager indexManager = couchbaseCluster.queryIndexes();
indexManager.createPrimaryIndex(couchbaseProperties.getBucketName(),
CreatePrimaryQueryIndexOptions.createPrimaryQueryIndexOptions());
indexManager.createIndex(couchbaseProperties.getBucketName(),
"user_idx", Collections.singletonList("userId"),
CreateQueryIndexOptions.createQueryIndexOptions());
}
每次我重新运行应用程序时,您可能会注意到它会再次尝试创建现有索引并抛出 IndexAlreadyExist 异常。
简单地说,我使用 if statement
检查是否创建了索引,但这似乎不是最佳实践。
涵盖了一堆强调 IF NOT EXISTS
关键字但我找不到正确语法或 CouchBase 不支持此功能的文档。
避免上述问题的最佳创建索引方法是什么?
谢谢你帮我。
QueryIndexOptions
和 PrimaryQueryIndexOptions
都有一个 ignoreIfExists 属性 你可以启用以获得你想要的行为。
CreateQueryIndexOptions.createQueryIndexOptions()
.ignoreIfExists(true)
我使用 Java SDK 3.0.3
作为 CouchBase 客户端。使用以下 @Configuration
@Bean
public void createIndexes() {
QueryIndexManager indexManager = couchbaseCluster.queryIndexes();
indexManager.createPrimaryIndex(couchbaseProperties.getBucketName(),
CreatePrimaryQueryIndexOptions.createPrimaryQueryIndexOptions());
indexManager.createIndex(couchbaseProperties.getBucketName(),
"user_idx", Collections.singletonList("userId"),
CreateQueryIndexOptions.createQueryIndexOptions());
}
每次我重新运行应用程序时,您可能会注意到它会再次尝试创建现有索引并抛出 IndexAlreadyExist 异常。
简单地说,我使用 if statement
检查是否创建了索引,但这似乎不是最佳实践。
涵盖了一堆强调 IF NOT EXISTS
关键字但我找不到正确语法或 CouchBase 不支持此功能的文档。
避免上述问题的最佳创建索引方法是什么? 谢谢你帮我。
QueryIndexOptions
和 PrimaryQueryIndexOptions
都有一个 ignoreIfExists 属性 你可以启用以获得你想要的行为。
CreateQueryIndexOptions.createQueryIndexOptions()
.ignoreIfExists(true)