String key = null;
esClient.search(search -> search
.index("index")
.query(query -> query.
bool(bool -> bool
.must(must -> must.match(match -> match.field("field").query(key))
)
)
), XXX.class);
就是 key 可能传入为 null
查询的时候传入空值就会报错,没有找到好的解决办法,只能先一个个进行 if 判断不为空后在调 api 查询,感觉很不优雅。希望可以优雅一点的方式判断空值,或者传空值的时候能想办法全匹配。 想用 lambda 形式来写查询,有没有类似 mybatisplus 中 lambdaquerywrapper.eq 的第一个参数为 bool 可以来判断参数不为空的实现方法?
1
akinoowari 266 天前
你这个查询如果只有一个 match 直接 must 就完事儿了,不用非得套一层 bool ;另外如果你非要写成 stream 的,就把 match 写一个单独的方法,在里面判空,为空就 match_all 或者别的。
|
2
akinoowari 266 天前
@akinoowari 说错了,直接一个 match 就可以(不是 must )。等效于套了 bool+must
|
3
xiangyin OP @akinoowari okok 谢谢
|