2

在使用 ElasticsearchTemplate 创建新索引时,我想使用在 elasticsearch.yml 中指定的副本数的设置。这样做的目的是根据 ES 运行的环境来设置副本的数量。例如:在 live 中使用 4 个副本,在 test 中使用 2 个副本。

我认为这可以通过在每个环境的 elasticsearch.yml 中将副本数设置为适当的值来实现。

但是,当我使用 ElasticsearchTemplate(例如,使用 Spring Data ES 存储库)创建新索引时,创建索引请求包含来自 @Document 注释的默认值 1。

@Persistent
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Document {

        String indexName();

        String type() default "";

        short shards() default 5;

        short replicas() default 1;

        String refreshInterval() default "1s";

        String indexStoreType() default "fs";
}

因此,不使用 elasticsearch.yml 中的默认值。有没有办法强制使用每个环境的默认设置?

我认为一种方法可以是使用索引模板,但还有另一种方法吗?

谢谢

4

1 回答 1

0

我不知道您使用的是哪个版本的 spring data 弹性搜索,但在 2.1.7 中有一个新属性@Document

boolean useServerConfiguration() default false;

如果您将其设置为 true,则 Spring Data repo 在创建索引请求时将不进行默认设置。

于 2018-11-20T08:47:08.827 回答