Búsqueda de Wilcard o coincidencia parcial en búsqueda elástica

Estoy tratando de proporcionar la búsqueda al usuario final con el tipo a medida que avanza, que es más como sqlserver. Pude implementar la consulta ES para el escenario sql dado:

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

Pero la consulta ES no funciona para esta consulta SQL

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

En mi búsqueda elástica junto con la consulta comodín, también necesito realizar alguna consulta filtrada booleana

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

La consulta elástica anterior con búsqueda con comodines funciona bien y me da todos los documentos que coinciden con pete y no son del tipo xyz y abc. Pero cuando intento realizar el comodín con 2 palabras separadas separadas por espacio, la misma consulta me devuelve vacío como se muestra a continuación, por ejemplo

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

Mi mapeo es el siguiente:

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

¿Qué consulta debo usar para hacer posible la búsqueda con comodines para palabras separadas por espacios?

Respuestas a la pregunta(2)

Su respuesta a la pregunta