Without cutoff_frequency cross_fields multi match uses DisjunctionMaxQuery:
query.json
{
"query": {
"multi_match": {
"query": "puma",
"fields": [
"name^10", "description"
],
"type": "cross_fields"
}
},
This file has been truncated. show original
result.json
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 16,
"successful": 16,
"failed": 0
},
"hits": {
"total": 16491,
This file has been truncated. show original
But if there is cutoff_frequency it suddenly uses BooleanQuery. Also tie_breaker option is ignored in this case:
query.json
{
"query": {
"multi_match": {
"query": "puma",
"fields": [
"name^10", "description"
],
"type": "cross_fields",
"cutoff_frequency": 0.01
}
This file has been truncated. show original
result.json
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 16,
"successful": 16,
"failed": 0
},
"hits": {
"total": 16491,
This file has been truncated. show original
This behaviour is not obvious and documentation doesn't point that.
Why Elasticsearch doesn't use DisjunctionMaxQuery in BlendedTermQuery.commonTermsBlendedQuery ?