WARNING: Version 5.4 of Elasticsearch has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Minimum Should Matchedit
The minimum_should_match
parameter possible values:
Type  Example  Description 

Integer 

Indicates a fixed value regardless of the number of optional clauses. 
Negative integer 

Indicates that the total number of optional clauses, minus this number should be mandatory. 
Percentage 

Indicates that this percent of the total number of optional clauses are necessary. The number computed from the percentage is rounded down and used as the minimum. 
Negative percentage 

Indicates that this percent of the total number of optional clauses can be missing. The number computed from the percentage is rounded down, before being subtracted from the total to determine the minimum. 
Combination 

A positive integer, followed by the lessthan symbol, followed by any of the previously mentioned specifiers is a conditional specification. It indicates that if the number of optional clauses is equal to (or less than) the integer, they are all required, but if it’s greater than the integer, the specification applies. In this example: if there are 1 to 3 clauses they are all required, but for 4 or more clauses only 90% are required. 
Multiple combinations 

Multiple conditional specifications can be separated by spaces, each one only being valid for numbers greater than the one before it. In this example: if there are 1 or 2 clauses both are required, if there are 39 clauses all but 25% are required, and if there are more than 9 clauses, all but three are required. 
NOTE:
When dealing with percentages, negative values can be used to get different behavior in edge cases. 75% and 25% mean the same thing when dealing with 4 clauses, but when dealing with 5 clauses 75% means 3 are required, but 25% means 4 are required.
If the calculations based on the specification determine that no optional clauses are needed, the usual rules about BooleanQueries still apply at search time (a BooleanQuery containing no required clauses must still match at least one optional clause)
No matter what number the calculation arrives at, a value greater than the number of optional clauses, or a value less than 1 will never be used. (ie: no matter how low or how high the result of the calculation result is, the minimum number of required matches will never be lower than 1 or greater than the number of clauses.