Estoy usando NODE JS con base de datos de búsqueda elástica. Estoy usando este paquete https://www.npmjs.com/package/@elastic/elasticsearch Tengo esta colección en mi base de datos de búsqueda elástica
[ { "_index": "products", "_id": "wZRh3n8Bs9qQzO6fvTTS", "_score": 1.0, "_source": { "title": "laptop issues", "description": "laptop have issue present in according" } }, { "_index": "products", "_id": "wpRh3n8Bs9qQzO6fvzQM", "_score": 1.0, "_source": { "title": "buy mobile", "description": "mobile is in Rs 250" } }, { "_index": "products", "_id": "w5Rh3n8Bs9qQzO6fvzTz", "_score": 1.0, "_source": { "title": "laptop payment", "description": "laptop payment is given in any way" } } ] ahora estoy planeando obtener datos de elastic DB. cuando estoy pasando "LAP" o "lap" . me está dando una matriz en blanco o una matriz [] ¿por qué? "lap" está presente en todos los objetos
estoy haciendo eso
const result= await client.search({ index: 'products', query: { match_phrase: { description: "lap" } }donde estoy haciendo mal. Necesito todos los resultados en los que estén presentes las palabras clave de vuelta
La consulta de coincidencia no funciona porque está intentando buscar un carácter parcial del término de la laptop .
Puede usar Prefix Query para un solo término como se muestra a continuación:
{ "query": { "prefix": { "title": { "value": "lap" } } } }Si desea buscar una frase, puede usar la consulta de prefijo de frase :
{ "query": { "match_phrase_prefix": { "title": "lap" } } } Si desea hacer coincidir solo parte de la palabra de la consulta, puede usar la match query con el operator establecido en or .
POST querycheck/_search { "query": { "match": { "title": { "query": "i have issues", "operator": "or" } } } }