Quiero encontrar una coincidencia exacta. Si no hay una coincidencia. No quiero anular .
Estoy buscando esta identificación 6a8c283f-1e75-ec11-8943-000d3a15f525 . me esta dando esta salida
Pero estos no coinciden, solo ec11 coincide.
Intenté esta consulta de búsqueda
result = await client.search({ index: 'products', "query": { "match": { "sysid":sysid } } })El problema es que su campo sysid es de tipo text y, por lo tanto, se analiza en el momento de la indexación y se tokeniza en fcf0dd4e , abbc , ec11 , 8943 y 000d3a15f525 .
Además, al buscar mediante una consulta de coincidencia, el término buscado también se analiza en los siguientes tokens 6a8c283f , 1e75 , ec11 , 8943 , 000d3a15f525 .
Como viste, la coincidencia funciona porque ec11 coincide.
Para una coincidencia exacta, lo que debe hacer es ejecutar su consulta en un campo de keyword . Tal vez tenga suerte y su asignación ya contenga un subcampo sysid.keyword . De lo contrario, debe cambiar su mapeo y reindexar sus datos.
Entonces podrá ejecutar su consulta de term de esta manera y obtener su coincidencia exacta:
"term": { "sysid.keyword":sysid }