Comment puis-je paramétrer un index SpringData ElasticSearch lors de l'exécution?Index dynamique avec SpringData ElasticSearch
Par exemple, le modèle de données:
@Document(indexName = "myIndex")
public class Asset {
@Id
public String id;
// ...
}
et le dépôt:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetById(String assetId);
}
Je sais que je peux remplacer myIndex
avec un paramètre, mais ce paramètre sera résolu lors de l'instanciation/boot. Nous avons la même structure d'actifs pour plusieurs clients/locataires, qui ont leur propre indice. Ce que je besoin est quelque chose comme ceci:
public interface AssetRepository extends ElasticsearchCrudRepository<Asset, String> {
Asset getAssetByIdFromIndex(String assetId, String index);
}
ou cette
repoInstance.forIndex("myOtherIndex").getAssetById("123");
Je sais que cela ne fonctionne pas hors de la boîte, mais est-il un moyen de programme « hack » il?
[Cette réponse] (http://stackoverflow.com/questions/33894618/creating-indices-name-dynamically-in-elasticsearch-using-spring-data-elasticsear?s=1|2.2393) ou [cette autre un] (http://stackoverflow.com/questions/24333327/rolling-index-dynamic-index-name-in-spring-data-elasticsearch?s=2|2.0926) devrait aider. – Val
Je ne crois pas non plus (trouvé et étudié les deux avant). Il ne s'agit pas de coder en dur le nom de l'index, mais je dois pouvoir appeler plusieurs index différents. Je ne connais que le nom de l'index via un paramètre client (pas au moment de la compilation ou du démarrage) – Daniel
Gotcha, trouvons donc une autre solution :) – Val