elasticsearch,spring-data-jpa,Java,Spring Boot,elasticsearch,Spring Data Jpa" /> elasticsearch,spring-data-jpa,Java,Spring Boot,elasticsearch,Spring Data Jpa" />

Java Spring boot弹性搜索存储库

Java Spring boot弹性搜索存储库,java,spring-boot,elasticsearch,spring-data-jpa,Java,Spring Boot,elasticsearch,Spring Data Jpa,我有几个保存产品的索引: product-example1 product-example2 product-example3 product-example4 product-example5 我有一个弹性搜索中的文档,它具有相同的结构,可以用于不同的索引: @Data @org.springframework.data.elasticsearch.annotations.Document(indexName = "", type = "", createIndex = false) pu

我有几个保存产品的索引:

product-example1
product-example2
product-example3
product-example4 
product-example5
我有一个弹性搜索中的文档,它具有相同的结构,可以用于不同的索引:

@Data
@org.springframework.data.elasticsearch.annotations.Document(indexName = "", type = "", createIndex = false)
public class ProductDocument {

@Id
private String id;
private String title;
private String seller;
private String releaseDate;
....
}
所以基本上我想使用相同的设置,相同的映射,相同的搜索服务。 因此,我在SpringBootJava中设置了
indexName
type
参数化,而不是创建扩展
ProductDocument
的5个类

@Autowired
private final ElasticsearchTemplate elasticsearchTemplate;  

this.elasticsearchTemplate.createIndex("product-example1", loadFile("/files/settings.json"));
this.elasticsearchTemplate.putMapping("product-example1", "product-type1",   loadFile("/files/mapping.json"));

this.elasticsearchTemplate.createIndex("product-example2", loadFile("/files/settings.json"));
this.elasticsearchTemplate.putMapping("product-example2", "product-type2",   loadFile("/files/mapping.json"));   

......
现在我想创建一个ProductRepository,但我没有一个定义了索引名的类。如果我使用泛型类:

public interface DocumentRepository extends ElasticsearchRepository<ProductDocument, String> {
}
公共接口DocumentRepository扩展了ElasticsearchRepository{
}
我得到了完全可以理解的错误,因为我以动态方式创建了索引名:
lang.IllegalArgumentException:未知索引名。确保已定义indexName。e、 g@ProductDocument(indexName=“foo”)

那么,是否有可能为我如上所述以动态方式创建的索引创建存储库,并将索引名称和类型作为参数传递


请帮忙!我被卡住了。

看看这个,我检查了这个,但它为每个索引创建了一个类,我不希望这样。我想为每个索引创建一个存储库,而不为每个索引创建一个特定的类@SandOfTime@SandOfTime你还有别的建议吗?