GOOGLE ADS

sábado, 16 de abril de 2022

¿Cómo buscar en dos columnas en elástico?

Estoy tratando de buscar en una base de datos elástica usando Node js. anteriormente estoy buscando en una columna que funciona bien

aquí están mis datos elásticos

[
{
"_index": "products",
"_id": "V5TCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_ignored": [
"description.keyword"
],
"_source": {
"entity": "Knowledge Article",
"id": "KB1112",
"title": "laptop issues",
"description": null,
"sysid": "7c700a58-1aeb-49c6-99a0-4ce3710a1db9",
"createdby": "Riya Kaul",
"createdon": "2022-02-08T09:13:01Z",
"viewcount": 1
}
},
{
"_index": "products",
"_id": "WJTCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_source": {
"entity": "Knowledge Article",
"id": "KB1111",
"title": "buy mobile",
"description": null,
"sysid": "e7c366a0-045f-474c-9365-754290b2d443",
"createdby": "Riya Kaul",
"createdon": "2022-02-08T06:44:49Z",
"viewcount": null
}
},
{
"_index": "products",
"_id": "WZTCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_source": {
"entity": "Knowledge Article",
"id": "KB1122",
"title": "laptop payment",
"description": null,
"sysid": "7c65126e-bc84-4fe1-975c-979e50d9786a",
"createdby": "Aarushi Sharma",
"createdon": "2022-02-14T04:56:05Z",
"viewcount": null
}
},
{
"_index": "products",
"_id": "WpTCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_source": {
"entity": "Knowledge Article",
"id": "KB1188",
"title": "laptop payment",
"description": null,
"sysid": "a52168bd-0c5d-44c0-85b4-cb7608a91903",
"createdby": "Nisha Kashyap",
"createdon": "2022-04-12T04:55:14Z",
"viewcount": null
}
},
]

cuando busco en un solo título de columna, funciona bien como resultado esperado

Usé esta consulta

const result = await client.search({
index: 'products',
"query": {
"match_bool_prefix": {
"title": {
"query": q
}
}
}
})

la consulta anterior funciona bien y da el resultado esperado. ahora quiero agregar una nueva columna ensysid

when I am using this query it is giving me error query doesn't support multiple fields, found [title] and [sysid]

const result = await client.search({
index: 'products',
"query": {
"match_bool_prefix": {
"title": {
"query": q
}, "sysid": {
"query": q
},
}
}
})

salida esperada
caso 1: La entrada es o q es:7c700a58-1aeb-49c6-99a0-4ce3710a1db9

Rendimiento esperado

 {
"_index": "products",
"_id": "V5TCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_ignored": [
"description.keyword"
],
"_source": {
"entity": "Knowledge Article",
"id": "KB1112",
"title": "laptop issues",
"description": null,
"sysid": "7c700a58-1aeb-49c6-99a0-4ce3710a1db9",
"createdby": "Riya Kaul",
"createdon": "2022-02-08T09:13:01Z",
"viewcount": 1
}
}

caso 2
si la entrada es q:lap

salida esperada: da 3 salidas

[
{
"_index": "products",
"_id": "V5TCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_ignored": [
"description.keyword"
],
"_source": {
"entity": "Knowledge Article",
"id": "KB1112",
"title": "laptop issues",
"description": null,
"sysid": "7c700a58-1aeb-49c6-99a0-4ce3710a1db9",
"createdby": "Riya Kaul",
"createdon": "2022-02-08T09:13:01Z",
"viewcount": 1
}
},
{
"_index": "products",
"_id": "WZTCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_source": {
"entity": "Knowledge Article",
"id": "KB1122",
"title": "laptop payment",
"description": null,
"sysid": "7c65126e-bc84-4fe1-975c-979e50d9786a",
"createdby": "Aarushi Sharma",
"createdon": "2022-02-14T04:56:05Z",
"viewcount": null
}
},
{
"_index": "products",
"_id": "WpTCK4ABs9qQzO6fmkbm",
"_score": 1.0,
"_source": {
"entity": "Knowledge Article",
"id": "KB1188",
"title": "laptop payment",
"description": null,
"sysid": "a52168bd-0c5d-44c0-85b4-cb7608a91903",
"createdby": "Nisha Kashyap",
"createdon": "2022-04-12T04:55:14Z",
"viewcount": null
}
},
]

¿Por qué cambio de consulta que puedo hacer para obtener el resultado esperado?


Solución del problema

intente usar consultas booleanas:

{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{"match": {
"title": q
}},
{"match": {
"sysid": q
}
],
}
}
}

en realidad, no coincidirá con "laptop" a menos que haya especificado un analizador apropiado para esto.

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...