Extraer registros de múltiples matrices basados en un filtro
Tengo documentos en ElasticSearch con la siguiente estructura:
"_source": {
"last_updated": "2017-10-25T18:33:51.434706",
"country": "Italia",
"price": [
"€ 139",
"€ 125",
"€ 120",
"€ 108"
],
"max_occupancy": [
2,
2,
1,
1
],
"type": [
"Type 1",
"Type 1 - (Tag)",
"Type 2",
"Type 2 (Tag)",
],
"availability": [
10,
10,
10,
10
],
"size": [
"26 m²",
"35 m²",
"47 m²",
"31 m²"
]
}
}
Básicamente, los registros de detalles se dividen en 5 matrices, y los campos del mismo registro tienen la misma posición de índice en las 5 matrices. Como se puede ver en los datos de ejemplo, hay 5 conjuntos (precio, ocupación máxima, tipo, disponibilidad, tamaño) que contienen valores relacionados con el mismo elemento. Quiero extraer el elemento que tiene el campo max_occupancy mayor o igual que 2 (si no hay registro con 2 grab a 3 si no hay 3 grab a cuatro, ...), con el precio más bajo, en este caso el registro y coloque el resultado en un nuevo objeto JSON como el siguiente:
{
"last_updated": "2017-10-25T18:33:51.434706",
"country": "Italia",
"price: ": "€ 125",
"max_occupancy": "2",
"type": "Type 1 - (Tag)",
"availability": 10,
"size": "35 m²"
}
Básicamente, la estructura de resultados debe mostrar el registro extraído (que en este caso es el segundo índice de toda la matriz) y agregarle la información general (campos: "last_updated", "country").
¿Es posible extraer dicho resultado de la búsqueda elástica? ¿Qué tipo de consulta debo realizar?
¿Podría alguien sugerir el mejor enfoque?