Pesquisa Wilcard ou correspondência parcial na pesquisa Elastic

Eu estou tentando fornecer a pesquisa para o usuário final com o tipo conforme eles vão, o que é mais parecido com o sqlserver. Consegui implementar a consulta ES para o cenário sql fornecido:

 select * from table where name like '%pete%' and type != 'xyz and type!='abc'

Mas a consulta ES não funciona para esta consulta sql

  select * from table where name like '%peter tom%' and type != 'xyz and type!='abc'

Na minha pesquisa elástica junto com a consulta curinga, também preciso realizar alguma consulta filtrada booleana

{
"query": {
"filtered": {
"filter": {
"bool": {
"should": [
{
"query": {
"wildcard": {
"name":
{ "value": "*pete*" }
}
}
}
],
"must_not": [
{
"match":
{ "type": "xyz" }
}, {
"match":
{ "type": "abc" }
}
]
}
}
}
}
}

A consulta elástica acima com pesquisa curinga funciona bem e obtém todos os documentos que correspondem a pete e não são do tipo xyz e abc. Mas quando tento executar o curinga com 2 palavras separadas separadas pelo espaço, a mesma consulta me retorna vazia, como mostrado abaixo. Por exemplo

{
    "query": {
    "filtered": {
    "filter": {
    "bool": {
    "should": [
    {
    "query": {
    "wildcard": {
    "name":
    { "value": "*peter tom*" }
    }
    }
    }
    ],
    "must_not": [
    {
    "match":
    { "type": "xyz" }
    }, {
    "match":
    { "type": "abc" }
    }
    ]
    }
    }
    }
    }
    }

Meu mapeamento é o seguinte:

{
  "properties": {
     "name": {
      "type": "string"
    }
    "type": {
      "type": "string"
    }
  }
}

Que consulta devo usar para possibilitar a pesquisa de curingas por palavras separadas por espaços

questionAnswers(2)

yourAnswerToTheQuestion