elasticsearch,lucene,hibernate-search,spring-el,Java,elasticsearch,Lucene,Hibernate Search,Spring El" /> elasticsearch,lucene,hibernate-search,spring-el,Java,elasticsearch,Lucene,Hibernate Search,Spring El" />

Java Hibernate搜索:如何动态配置JPA实体的索引?

Java Hibernate搜索:如何动态配置JPA实体的索引?,java,elasticsearch,lucene,hibernate-search,spring-el,Java,elasticsearch,Lucene,Hibernate Search,Spring El,我有两个应用程序,它们使用与搜索引擎相同的Elasticsearch实例。两个应用程序共享相同的代码库,只有细微的差异 应用程序针对不同的数据库运行,因此,应使用不同的ES索引 我尝试使用SpEL参数化索引名,如下所示: @Indexed(index="${es.index.users}") public UserEntity {} 但是,它不起作用 我尝试的第二个选项是通过hibernate.search.default.indexBase=为不同的应用程序设置不同的前缀。但是,它只适用于L

我有两个应用程序,它们使用与搜索引擎相同的Elasticsearch实例。两个应用程序共享相同的代码库,只有细微的差异

应用程序针对不同的数据库运行,因此,应使用不同的ES索引

我尝试使用SpEL参数化索引名,如下所示:

@Indexed(index="${es.index.users}")
public UserEntity {}
但是,它不起作用

我尝试的第二个选项是通过
hibernate.search.default.indexBase=
为不同的应用程序设置不同的前缀。但是,它只适用于Lucene引擎,而不适用于ES

有没有办法在运行时将索引名传递到
@Indexed
注释中?
如果没有,是否有其他方法来传递应该使用的索引?

目前,唯一的解决方案是使用。这将允许您执行代码来设置索引名称。如果您需要从配置文件中检索索引名,这将由您决定

首先,从索引实体中删除
@index
注释

然后,实现映射工厂:

package.com.myCompany;
// ... 进口。。。
公共类MyAppSearchMappingFactory{
@工厂
公共搜索映射getSearchMapping(){
SearchMapping=newsearchMapping();

谢谢!我来试试看
hibernate.search.model_mapping com.myCompany.MyAppSearchMappingFactory;