2

ElasticsearchTemplate で新しいインデックスを作成するときに、elasticsearch.yml で指定したレプリカ数の設定を使用したい。これの目的は、ES が実行されている環境に基づいてレプリカの数を設定することです。例: ライブで 4 つのレプリカ、テストで 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 Elastic Searchのバージョンはわかりませんが、2.1.7には新しい属性があります@Document

boolean useServerConfiguration() default false;

これを true に設定すると、Spring データ リポジトリは、インデックス リクエストの作成時にデフォルト設定を実行しません。

于 2018-11-20T08:47:08.827 に答える