Как я могу параметризовать индекс SpringData ElasticSearch во время выполнения?
Например, модель данных:
@Document(indexName = "myIndex")
public class Asset {
@Id
public String id;
// ...
}
и репозиторий:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetById(String assetId);
}
Я знаю, что могу заменить myIndex
параметром, но этот параметр будет разрешен во время создания экземпляра/загрузки. У нас одинаковая структура активов для нескольких клиентов/арендаторов, у которых есть свой индекс. Мне нужно что-то вроде этого:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetByIdFromIndex(String assetId, String index);
}
или это
repoInstance.forIndex("myOtherIndex").getAssetById("123");
Я знаю, что это не работает из коробки, но есть ли способ программно «взломать» его?