spring-data-elasticsearch Java api でフィルターを使用しようとしています。このような2つのフィールドに基づいて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集計が常に適用されるようにするにはどうすればよいですか