我正在尝试在 spring-data-elasticsearch java api 中使用过滤器。我知道我可以使用 andFilter 基于这样的两个字段进行搜索
builder.withFilter(FilterBuilders.andFilter(FilterBuilders.rangeFilter("DATE").gte(startDate).lt(endDate), FilterBuilders.boolFilter().mustNot(FilterBuilders.termFilter("STATUS", "ACTIVE"))));
但是在代码中我有一些 if 条件,因此我不能直接使用 andFilter 来搜索......看看这个例子
if("MSGSTAT".equals("SENT")) {
builder.withFilter(FilterBuilders.rangeFilter("DATE").gte(startDate).lt(endDate));
}
if("STATUS".equals("ACTIVE")) {
builder.withFilter(FilterBuilders.boolFilter().mustNot(FilterBuilders.termFilter("STATUS", "ACTIVE")));
}
当我以上述方式使用过滤器时,它不应用 and 关键字并且收到的结果不正确。我也尝试过这样做,但也无济于事
builder.withFilter(FilterBuilders.andFilter(FilterBuilders.rangeFilter("DATE").gte(startDate).lt(endDate)));
builder.withFilter(FilterBuilders.andFilter(FilterBuilders.boolFilter().mustNot(FilterBuilders.termFilter("STATUS", "ACTIVE"))));
我应该如何确保在使用 if 条件时始终应用 AND 聚合