diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java index 01670206a..0b422b229 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java @@ -29,6 +29,9 @@ import org.springframework.data.elasticsearch.annotations.Parent; import org.springframework.data.elasticsearch.annotations.Setting; import org.springframework.data.mapping.model.BasicPersistentEntity; import org.springframework.data.util.TypeInformation; +import org.springframework.expression.Expression; +import org.springframework.expression.ParserContext; +import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.util.Assert; @@ -43,6 +46,8 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit implements ElasticsearchPersistentEntity, ApplicationContextAware { private final StandardEvaluationContext context; + private final SpelExpressionParser parser; + private String indexName; private String indexType; private short shards; @@ -56,6 +61,8 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit public SimpleElasticsearchPersistentEntity(TypeInformation typeInformation) { super(typeInformation); this.context = new StandardEvaluationContext(); + this.parser = new SpelExpressionParser(); + Class clazz = typeInformation.getType(); if (clazz.isAnnotationPresent(Document.class)) { Document document = clazz.getAnnotation(Document.class); @@ -82,7 +89,8 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit @Override public String getIndexName() { - return indexName; + Expression expression = parser.parseExpression(indexName, ParserContext.TEMPLATE_EXPRESSION); + return expression.getValue(context, String.class); } @Override