如何为以下查询形成弹性搜索查询?
"or (test.period.fromDate >= :fromDate "
+ "and test.period.toDate < :toDate)"
我试过这个,但在must方法中抛出编译时错误。
方法必须(RangeFilterBuilder)未定义RangeFilterBuilder类型
.should(rangeFilter("test.period.fromDate").gte(sc.getFromDate())
.must(rangeFilter("test.period.toDate").lt(sc.getToDate())))
答案 0 :(得分:0)
你的问题是你忘记了一个括号。这应该是:
.should(
rangeFilter("test.period.fromDate").gte(sc.getFromDate())
)
.must(
rangeFilter("test.period.toDate").lt(sc.getToDate())
)
must
部分应用于should
部分之后,而不是rangeFilter
部分。
此外,我认为您可能会遇到另一个基于您提供的类似SQL的查询的问题。我认为查询应该是:
.should(
boolQuery().must(
rangeFilter("test.period.fromDate").gte(sc.getFromDate())
)
.must(
rangeFilter("test.period.toDate").lt(sc.getToDate())
)
)