我有一个用例,其中我想根据某些条件在一个单独的索引中为我的文档建立索引。例如,我要将发票文件存储到带有后缀的部门名称的索引中。
@Document(indexName="store_{department}", indexStoreType="invoice")
public class InvoiceES{
// fields
@Id
private String id;
@Field
private String department;
}
是否可以使用Spring Data实现此目的?
如果不是这样,是否计划在Spring Data的后续版本中进行?
最佳答案
至于spring-boot-starter-data-elasticsearch-1.5,您可以通过spring el表达式来实现:
@Bean
Department department() {
return new Department();
}
@Document(indexName="store_#{department.name()}", indexStoreType="invoice")
public class InvoiceES{}
您可以更改bean的属性来更改要保存/搜索的索引:
invoiceRepo.save(new Invoice(...));
department.setName("newName");
invoiceRepo.save(new Invoice(...));
应该注意的是不要在多个线程中共享该bean,这可能会使您的索引混乱。