背景:
使用JestClient客户端,添加查询语句查询ES
问题:
当我们使用BoolQueryBuilder时要添加查询条件,往往都是追加的状态,没有提供API删除多余的查询条件(如果重新new一个BoolQueryBuilder对象再把当前对象赋值给新的BoolQueryBuilder无法解决问题,因为是直接把内存地址值引用了,而没有创建一个新的对象)
解决:
通过查找BoolQueryBuilder源码发现添加条件时候是调用add方法
这是入口
思路
看源码发现mustClauses集合中装载了我们的条件,那我们是不是拿到当前的mustClauses集合然后进行remove就好了呢
找到获取集合的方法
后续拿到当前集合删掉其中的条件就好
must.remove(2);
备注
不同的查询有不同的集合对象
总结
ES添加条件都是append追加,要删除条件获取条件的集合在使用remove方法