# Elastic search : Replacing BoolFilterBuilder from v0.9 to v6

**URL:** <https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148>\
**Category:** Elasticsearch\
**Created:** [December 18, 2017, 5:13am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148 "2017-12-18T05:13:17Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![satyarajp](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@satyarajp](https://discuss.elastic.co/u/satyarajp)\
**Post date:** [December 18, 2017, 5:13am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/1 "2017-12-18T05:13:17Z")

</div>

Hi Team,

Can you please help me if the below code(es v0.9) can be replaced

```
BoolFilterBuilder filter = FilterBuilders.boolFilter().filterName("compositeFilter");
filterBuilder.must(FilterBuilders.termsFilter("keyword", toLowerCase(filterList)));

```

by the following (es v6)

```
BoolQueryBuilder query = QueryBuilders.boolQuery();
query.filter(QueryBuilders.termsQuery("keyword", toLowerCase(filterList))).must();
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 18, 2017, 6:17am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/2 "2017-12-18T06:17:16Z")

</div>

That might be ok.

You can remove `must()` at the end BTW.

---

<div class="post-metadata">

**Author:** ![satyarajp](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@satyarajp](https://discuss.elastic.co/u/satyarajp)\
**Post date:** [December 18, 2017, 6:29am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/3 "2017-12-18T06:29:14Z")

</div>

Ohh.. Then how do I differentiate/specify must, mustnot while using boolquery as filter ?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 18, 2017, 7:35am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/4 "2017-12-18T07:35:54Z")

</div>

You can add a `bool` within a `bool.filter` clause.

---

<div class="post-metadata">

**Author:** ![satyarajp](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@satyarajp](https://discuss.elastic.co/u/satyarajp)\
**Post date:** [December 18, 2017, 8:27am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/5 "2017-12-18T08:27:16Z")

</div>

Hi Sir,

I'm missing something here. I don't completely understand.

`query.filter(QueryBuilders.termsQuery("keyword", toLowerCase(filterList)));`

The above snippet is what could be proper replacement.  
I'm not getting how do we specify exact `must` clauses. Can you help me with similar code line.

Thank you,  
Regards,  
SatyaRaj

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 18, 2017, 10:27am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/6 "2017-12-18T10:27:00Z")

</div>

Why do you want to use `must` when you can use `filter`?

---

<div class="post-metadata">

**Author:** ![satyarajp](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@satyarajp](https://discuss.elastic.co/u/satyarajp)\
**Post date:** [December 18, 2017, 10:37am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/7 "2017-12-18T10:37:20Z")

</div>

OK, So v6 is basically moving out of this must filter and then mustnot ?  
My usecase is to use`mustNot` in some cases

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 18, 2017, 10:56am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/8 "2017-12-18T10:56:54Z")

</div>

yes.

Your original example was without `must_not`. But you can basically use `filter` to filter (no scoring), `must_not` to remove documents from the resultset, and `must`or `should` if relevancy matters.

---

<div class="post-metadata">

**Author:** ![satyarajp](https://avatars.discourse-cdn.com/v4/letter/s/90db22/32.png) [@satyarajp](https://discuss.elastic.co/u/satyarajp)\
**Post date:** [December 18, 2017, 11:43am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/9 "2017-12-18T11:43:09Z")

</div>

> [@satyarajp](#):
>
> must

That helps. David..Will Use this way now. will keep you posted in case of any further issues.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 15, 2018, 11:43am UTC](https://discuss.elastic.co/t/elastic-search-replacing-boolfilterbuilder-from-v0-9-to-v6/112148/10 "2018-01-15T11:43:21Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
