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你还有别的建议吗?