私のプロジェクトでは、クラスが ElasticsearchRepository を拡張しているときに、ElasticsearchRepository を使用しています。
indexName プロパティを動的に変更する方法はありますか? indexName は動的であるため、@Document を使用したくありませんか?
私のプロジェクトでは、クラスが ElasticsearchRepository を拡張しているときに、ElasticsearchRepository を使用しています。
indexName プロパティを動的に変更する方法はありますか? indexName は動的であるため、@Document を使用したくありませんか?
@Document(indexName = "xxx") は SpEL 式にすることができます。式は、SDE がインデックス名を取得するためにインデックス名を必要とするたびに解析されます。そのため、たとえば application.yml ファイルを介して、実行時に設定したものに基づいて名前を付けることができます。理論的には、SpEL でできることはすべて可能です。
これを使用して、すべてのインデックス名の先頭に追加される「プレフィックス」値を定義し、互いに衝突することなく、同じ ES クラスター内で同じベース インデックス名を持つ複数のアプリケーションを実行できるようにしています。だから私は @Document() タグを次のように持っています:
@Document(indexName = "#{environment.getRequiredProperty('es.prefix') + '-doc'}")
次に、es.prefix を application.properties または application.yml ファイルで必要な値に設定します。