在elasticsearch中,我每天都有多个索引,我使用elasticsearchrepository来查询我的文档。文件定义;
@Getter
@Setter
@Document(indexName = "fraud-hub-digital-transactions-#{T(java.time.LocalDate).now().toString()}", createIndex = false)
@TypeAlias("fraud-hub-digital-transactions")
public class FraudDigitalTransactions {
@Id
@Field(name = "transaction_key",type = FieldType.Long)
private Long transactionId;
@Field(name = "client_no",type = FieldType.Integer)
private Integer clientNo;
}
我的索引将使用此定义为每天动态创建
@Document(indexName = "fraud-hub-digital-transactions-#{T(java.time.LocalDate).now().toString()}"
我的存储库定义;
@Repository
public interface FraudDigitalTransactionsRepository extends ElasticsearchRepository<FraudDigitalTransactions,String> {
List<FraudDigitalTransactions> findByClientNo(Integer clientNo);
}
当我按客户机查询时,不只是返回当前日期值。
@Test
public void testFindByClientNo() {
List<FraudDigitalTransactions> fraudDigitalTransactions = fraudDigitalTransactionsRepository.findByClientNo(88019237);
Assert.assertNotEquals(fraudDigitalTransactions.size(),0);
}
测试失败。返回的当天值不是所有索引都搜索到的。可能spring数据在当前索引中搜索文档spring数据搜索所有索引有什么方法吗?我可以做elasticsearch高级客户端,但我想用spring数据功能
1条答案
按热度按时间mcvgt66p1#
您将需要使用通配符或别名进行搜索,并在编写时使用bean生成的索引名。
我最近写了一篇博客文章,介绍了如何使用索引模板使用SpringDataElasticSearch4.1实现这一点。