每次应用程序重新运行时,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 不支持此功能的文档。

避免上述问题的最佳创建索引方法是什么? 谢谢你帮我。

QueryIndexOptionsPrimaryQueryIndexOptions 都有一个 ignoreIfExists 属性 你可以启用以获得你想要的行为。

CreateQueryIndexOptions.createQueryIndexOptions()
  .ignoreIfExists(true)