Unexpected result has minimum_should_match from bool + terms query

I'm sorry.
This is resolved.

I replaced "miminum_should_match" to "min_should_match" on TermsQuery.

==========================
Hello guys.

I have a bool + terms query:
{
"size": 10,
"query" : {
"bool" : {
"must": [
{
"terms": {
"title": [
"nike",
"sport"
]
}
}
],
"minimum_number_should_match": 2
}
}
}

or

{
"size": 10,
"query" : {
"bool" : {
"should": [
{
"terms": {
"title": [
"nike",
"sport"
]
}
}
],
"minimum_should_match": 2
}
}
}

This query means title field must have two keyword which are nike and sport.
but i have below result.
...
"_index" : "product",
"_type" : "deal",
"_id" : "AVThxx44V_2_BBvDN_y5",
"_score" : 3.9251113,
"_source" : {
"id" : 25006,
"item_group_id" : 36047,
"title" : "[Nike] Inspiration and Innovation for Every Athlete in the World.",
...

Why does not work minimum_should_match:2?

[Environment]

  • OS : Ubuntu 14.04
  • Elasticsearch : 2.3.3
  • JDK : 1.8.x

Resolved how? Sharing may help others in future.

This issue is working on the REST API.
Still, Java API is not working.
Because, TermsQueryBuilder doesn't support min_should_match so I changed over terms query to bool query and multiple term query.