每次重新运行应用程序时,CouchBase都会尝试创建索引

问题描述

我将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)