Luego de consultar con expertos en esta materia, programadores de diversas áreas y maestros dimos con la solución a la cuestión y la plasmamos en este post.
Solución:
Alternativamente, podría usar un query_string
consulta con comodines.
"query":
"query_string":
"query": "*mar*",
"fields": ["user.name", "user.surname"]
Esto será más lento que usar un filtro nGram en tiempo de indexación (vea mi otra respuesta), pero si está buscando una solución rápida y sucia…
Además, no estoy seguro acerca de su mapeo, pero si está usando user.name
en lugar de name
su mapeo debe verse así:
"your_type_name_here":
"properties":
"user":
"type": "object",
"properties":
"name":
"type": "string"
,
"surname":
"type": "string"
Tal consulta funcionó para mí:
"query":
"filtered":
"query":
"match_all":
,
"filter":
"bool":
"should": [
"query": "wildcard": "user.name": "value": "*mar*",
"query": "wildcard": "user.surname": "value": "*mar*"
]
Similar a lo que estás haciendo, excepto que en mi caso podría haber diferentes máscaras para diferentes campos.
Acabo de hacer esto ahora:
GET _search
"query":
"bool":
"must": [
"range":
"theDate":
"gte": "2014-01-01",
"lte": "2014-12-31"
,
"match" :
"Country": "USA"
],
"should": [
"wildcard" : "Id_A" : "0*"
,
"wildcard" : "Id_B" : "0*"
],"minimum_number_should_match": 1
Reseñas y calificaciones
Agradecemos que quieras añadir valor a nuestro contenido cooperando tu veteranía en las explicaciones.