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