Extrair registro de várias matrizes com base em um filtro
Eu tenho documentos no ElasticSearch com a seguinte estrutura:
"_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²"
]
}
}
Basicamente, os registros de detalhes são divididos em 5 matrizes e os campos do mesmo registro têm a mesma posição de índice nas 5 matrizes. Como pode ser visto nos dados de exemplo, existem 5 matrizes (preço, ocupação máxima, tipo, disponibilidade, tamanho) que contêm valores relacionados ao mesmo elemento. Eu quero extrair o elemento que tem o campo max_occupancy maior ou igual a 2 (se não houver registro com 2 pegar um 3 se não houver 3 pegar um quatro, ...), com o preço mais baixo, nesse caso o registro e coloque o resultado em um novo objeto JSON como o seguinte:
{
"last_updated": "2017-10-25T18:33:51.434706",
"country": "Italia",
"price: ": "€ 125",
"max_occupancy": "2",
"type": "Type 1 - (Tag)",
"availability": 10,
"size": "35 m²"
}
Basicamente, a estrutura de resultados deve mostrar o registro extraído (que neste caso é o segundo índice de toda a matriz) e adicionar as informações gerais a ele (campos: "last_updated", "country").
É possível extrair esse resultado da pesquisa elástica? Que tipo de consulta eu preciso executar?
Alguém poderia sugerir a melhor abordagem?