I am running in to an issue while upgrading ES nodes from 5.4.1 to 5.6.4. When a user runs a search that is going to hit a large number of shards, we get the following exception:
{
"error": {
"root_cause": [
{
"type": "illegal_argument_exception",
"reason": "can_match is not supported on pre 5.6.0 nodes"
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "can_match",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "metric_month_currency_201801_0",
"node": "ZtLqoGi2Rzm7_wAufRRFCg",
"reason": {
"type": "illegal_argument_exception",
"reason": "can_match is not supported on pre 5.6.0 nodes"
}
}
]
},
"status": 400
}
I think this optimization was introduced to 5.6.0 as per the breaking changes ==> * Backport can_match
endpoint to 5.6 to allow 6.0 to use the optimization in mixed version #25704 (issue: #25658)
The cluster is still on 5.4.1 and we are planning to do a rolling upgrade once we are sure that all the searches are looking fine.
I am wondering if there is a way to skip the can_match phase of the ES on 5.6.4 nodes. We are getting ready to upgrade the entire fleet from 5.4.1 to 6.7, but we need to get to 5.6.4 first in order to use the rolling upgrades strategy to achieve the upgrade.