Stai complicando le cose e stai cercando di adattare il concetto di MySQL in Elasticsearch. In questo caso, devi definire correttamente la tua mappatura dell'indice (tipi di dati dei campi e il loro analizzatore in base ai requisiti di ricerca) e di conseguenza costruire le tue query.
Ho preso il tuo campione e non ho cambiato la mappatura dell'indice e il documento di esempio, ma ho cambiato la query di ricerca per mostrare come con i tuoi dati e requisiti esistenti (potrebbe non funzionare in tutti i casi, ma ti viene un'idea) può portare la ricerca.
Query di ricerca
{
"query": {
"multi_match": { --> note and read about multi_match query
"query": "36695",
"fields": [
"address",
"city_code", --> add more fields if you need to be
"zip_code",
"contact_no"
]
}
}
}
Il risultato della ricerca porta il tuo documento di esempio:
"hits": [
{
"_index": "so_mysql_dsl",
"_type": "_doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"promotion": null,
"image": null,
"name": "Port City Realty",
"city_code": "Mobile",
"services": null,
"promotion_exp_date": null,
"tuesdayopen": null,
"tuesdayclose": null,
"wednesdayopen": null,
"thursdayclose": null,
"@timestamp": "2020-03-13T15:44:45.330Z",
"date_updated": "2020-03-06T00:00:00.000Z",
"mondayopen": null,
"contact_no": "2516891228",
"id": 1941,
"fridayclose": null,
"featured": 0,
"main_cate": 1,
"wednesdayclose": null,
"sundayopen": null,
"state_code": "AL",
"video": null,
"address": "4826 Whispering Oaks Lane",
"user_id": null,
"slug": "2516891228-port-city-realty-mobile-al-36695",
"timezone": null,
"source": "USA Business",
"description": null,
"fridayopen": null,
"price": null,
"saturdayopen": null,
"saturdayclose": null,
"date_added": "2020-03-05T19:00:00.000Z",
"thursdayopen": null,
"@version": "1",
"status": 1,
"mondayclose": null,
"zip_code": "36695",
"private_contact": null,
"location_id": 0,
"sundayclose": null
}
}
]