# Java api for Filterbuilders in elasticsearch 2

**URL:** <https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835>\
**Category:** Elasticsearch\
**Created:** [November 17, 2015, 5:55pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835 "2015-11-17T17:55:13Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![mramaprasad](https://avatars.discourse-cdn.com/v4/letter/m/ad7895/32.png) [@mramaprasad](https://discuss.elastic.co/u/mramaprasad)\
**Post date:** [November 17, 2015, 5:55pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/1 "2015-11-17T17:55:13Z")

</div>

I am using  
QueryBuilder qb = null;  
FilterBuilder fb = null;

fb = FilterBuilders.andFilter(  
FilterBuilders.termsFilter("dbname", searchDBs))

qb = (QueryBuilder) QueryBuilders.queryString("""+ searchText+ """).field("titlefield");

FilteredQueryBuilder builder = QueryBuilders.filteredQuery(qb,fb);

FunctionScoreQueryBuilder functionbuilder = new FunctionScoreQueryBuilder(builder).add(FilterBuilders.termsFilter("dbname", "test"), factorFunction(-30.0f))  
.add(FilterBuilders.rangeFilter("pubdate").gte("2014-01"), factorFunction(10));

srb.setQuery(functionbuilder);

These don't work in elasticsearch 2.0.

Can I get some examples as to how to make these work in 2.0 please?

---

<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:** [November 17, 2015, 6:08pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/2 "2015-11-17T18:08:01Z")

</div>

I think it does not compile at all.

Did you read [https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-query-dsl.html](https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-query-dsl.html) ?

For example: [https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html#java-query-dsl-filtered-query](https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-compound-queries.html#java-query-dsl-filtered-query)

Note that it's better to use a must query here.

---

<div class="post-metadata">

**Author:** ![mramaprasad](https://avatars.discourse-cdn.com/v4/letter/m/ad7895/32.png) [@mramaprasad](https://discuss.elastic.co/u/mramaprasad)\
**Post date:** [November 17, 2015, 6:23pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/3 "2015-11-17T18:23:57Z")

</div>

Thank you!

---

<div class="post-metadata">

**Author:** ![mramaprasad](https://avatars.discourse-cdn.com/v4/letter/m/ad7895/32.png) [@mramaprasad](https://discuss.elastic.co/u/mramaprasad)\
**Post date:** [November 18, 2015, 12:36am UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/4 "2015-11-18T00:36:33Z")

</div>

I updated the search query to the following. Each time i call setQuery it over writes the previous one. How do I rewrite this query?

QueryBuilder qb = null;  
SearchRequestBuilder srb = null;

srb = client.prepareSearch("alias1");  
srb = srb.setTypes("site");

qb = (QueryBuilder) QueryBuilders.queryString("""+ searchText+ """).field("titlefield");  
srb.setQuery((org.elasticsearch.index.query.QueryBuilder) qb);

//for filtering  
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

boolQueryBuilder.must(QueryBuilders.matchQuery("dbname", searchDBs));  
boolQueryBuilder.must(QueryBuilders.rangeQuery("pubdate").from("1890-09").to("2016-08"));

QueryBuilder aScore = QueryBuilders.functionScoreQuery().  
add(  
QueryBuilders.matchQuery("dbname", "test"),

```
		       ScoreFunctionBuilders.weightFactorFunction(10)  
		   );

```

srb.setQuery(aScore)

---

<div class="post-metadata">

**Author:** ![mramaprasad](https://avatars.discourse-cdn.com/v4/letter/m/ad7895/32.png) [@mramaprasad](https://discuss.elastic.co/u/mramaprasad)\
**Post date:** [November 18, 2015, 7:07pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/5 "2015-11-18T19:07:00Z")

</div>

How to write the following filtered query using elasticsearch java api?

{  
"query": {  
"bool": {  
"must": [  
{ "match": { "title": "Search" }},  
{ "match": { "content": "Elasticsearch" }}

],  
"filter": [  
{ "term": { "status": "published" }},  
{ "range": { "publish\_date": { "gte": "2015-01-01" }}}  
]  
}  
}  
}

---

<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:** [July 5, 2017, 11:37pm UTC](https://discuss.elastic.co/t/java-api-for-filterbuilders-in-elasticsearch-2/34835/6 "2017-07-05T23:37:30Z")

</div>


