# Filters for MLT

**URL:** <https://discuss.elastic.co/t/filters-for-mlt/6045>\
**Category:** Elasticsearch\
**Created:** [December 2, 2011, 1:13am UTC](https://discuss.elastic.co/t/filters-for-mlt/6045 "2011-12-02T01:13:02Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eugene\_Strokin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eugene_strokin/32/1238_2.png) [@Eugene\_Strokin](https://discuss.elastic.co/u/Eugene_Strokin)\
**Post date:** [December 2, 2011, 1:13am UTC](https://discuss.elastic.co/t/filters-for-mlt/6045/1 "2011-12-02T01:13:02Z")

</div>

Hello, I'm using MoreLikeThisRequestBuilder to prepare a query.  
Everything works fine, but I need to filter the result. For example I  
need to return all MLT documents but they must have certain value in  
some field. In Solr I had filter query, do we have something like this  
in ElasticSearch?  
Thank you,  
Eugene S.

---

<div class="post-metadata">

**Author:** ![kimchy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kimchy/32/44952_2.png) [@kimchy](https://discuss.elastic.co/u/kimchy)\
**Post date:** [December 4, 2011, 2:03pm UTC](https://discuss.elastic.co/t/filters-for-mlt/6045/2 "2011-12-04T14:03:41Z")

</div>

You have two options: Either pass to setSearchSource a SearchSourceBuilder  
initialized with a filter, or, build your own mlt by creating your own  
search request that includes an mlt query (wrapped in other queries,  
with/without filters), with the text for the mlt extracted from the  
relevant doc you want.

On Fri, Dec 2, 2011 at 3:13 AM, Eugene Strokin [eugene@strokin.info](mailto:eugene@strokin.info) wrote:

> Hello, I'm using MoreLikeThisRequestBuilder to prepare a query.  
> Everything works fine, but I need to filter the result. For example I  
> need to return all MLT documents but they must have certain value in  
> some field. In Solr I had filter query, do we have something like this  
> in Elasticsearch?  
> Thank you,  
> Eugene S.

---

<div class="post-metadata">

**Author:** ![Eugene\_Strokin](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/eugene_strokin/32/1238_2.png) [@Eugene\_Strokin](https://discuss.elastic.co/u/Eugene_Strokin)\
**Post date:** [December 5, 2011, 9:22pm UTC](https://discuss.elastic.co/t/filters-for-mlt/6045/3 "2011-12-05T21:22:47Z")

</div>

Thank you, I've used the first option and it looks fine. Here is an  
example for someone who would have such task in future:

SearchResponse  
response=clientProvider.getClient().prepareMoreLikeThis(  
clientProvider.getIndexName(), "post", postId)  
.setField("text")  
.setSearchSource(  
SearchSourceBuilder.searchSource()  
.query(QueryBuilders.matchAllQuery())  
.filter(FilterBuilders.andFilter(  
FilterBuilders.termFilter("imgWidth", 300),  
FilterBuilders.termFilter("replica", false)))  
)  
.setMinTermFreq(1)  
.setSearchFrom(0)  
.setSearchSize(settings.getPostsOnPage())  
.execute().actionGet();

On Dec 4, 9:03 am, Shay Banon [kim...@gmail.com](mailto:kim...@gmail.com) wrote:

> You have two options: Either pass to setSearchSource a SearchSourceBuilder  
> initialized with a filter, or, build your own mlt by creating your own  
> search request that includes an mlt query (wrapped in other queries,  
> with/without filters), with the text for the mlt extracted from the  
> relevant doc you want.
> 
> On Fri, Dec 2, 2011 at 3:13 AM, Eugene Strokin [eug...@strokin.info](mailto:eug...@strokin.info) wrote:
> 
> > Hello, I'm using MoreLikeThisRequestBuilder to prepare a query.  
> > Everything works fine, but I need to filter the result. For example I  
> > need to return all MLT documents but they must have certain value in  
> > some field. In Solr I had filter query, do we have something like this  
> > in Elasticsearch?  
> > Thank you,  
> > Eugene S.

---

<div class="post-metadata">

**Author:** ![Jason\_Liu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jason_liu/32/1768_2.png) [@Jason\_Liu](https://discuss.elastic.co/u/Jason_Liu)\
**Post date:** [February 27, 2014, 10:59pm UTC](https://discuss.elastic.co/t/filters-for-mlt/6045/4 "2014-02-27T22:59:33Z")

</div>

This is very useful. Thanks!

---

<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 6, 2017, 1:46am UTC](https://discuss.elastic.co/t/filters-for-mlt/6045/5 "2017-07-06T01:46:45Z")

</div>


