Elija nested cuando varias condiciones deban aplicarse al mismo elemento de un array. De lo contrario, valores de elementos diferentes pueden cumplir accidentalmente la consulta juntos.
Un producto con dos variantes
No hay una variante roja de talla L. Pero un mapping object ordinario aplana estos campos en varios colores y varias tallas, perdiendo qué talla corresponde a qué color. Por eso una consulta por rojo y L puede encontrar incorrectamente el producto.
Mapee variants como nested y color/size como keyword. Después use:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Ambos filtros se ejecutan ahora dentro de un elemento nested, así que el producto de ejemplo no coincide. Cambie L por S y puede coincidir la variante roja.
Los elementos nested crean documentos internos adicionales y consultas más costosas. Object ordinario es más simple cuando no hace falta conservar relaciones dentro de arrays. Pruebe combinaciones válidas y combinaciones entre elementos antes de considerar correcto el mapping.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar