Spring 多索引数据elasticsearch查询

Spring data elasticsearch query on multiple indices

我每天在 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 数据特征

您将需要使用通配符或别名进行搜索,并在编写时使用 bean 生成的索引名称。

我最近写了一篇 blog post 如何使用 Spring Data Elasticsearch 4.1 使用索引模板来做到这一点。