Учитывая эту структуру записи
"place": {
"id": "4f58e38866eaa71e74000027",
"name": "Some name",
"point" [14.53535, 56.32535],
"hostname": "Something",
"locality": "something",
"type": "Some type",
"average_price": 67
}
"container": {
"title": "Something",
"category": "Something"
}
"row": {
"name": "Something",
"description": "Something",
"price": 45,
"markings_array": ['some_tag', 'some_tag'],
"prioritized": true
}
Я пытаюсь добиться этого:
- Сортировка по алфавиту на месте.имя
- Сортировать по расстоянию по месту. Точка
- Сортировка / увеличение мест по массиву идентификаторов
- Увеличение мест, ближайших к данной точке параметра
- Увеличить строки, если они приотизированы
- Рандомизировать сортировку по place.name
- Сортировать по месту. Avage_price
- Срок запроса на place.hostname и place.locality
- Строковый запрос для row.name
- Фасет на container.title
- Фасет по row.markings_array
В конце концов, результаты должны использоваться в этом формате, а «центральный объект» - это контейнер:
РЕДАКТИРОВАТЬ: «Центральный объект» также может быть место.
[{
"_score" : 183.96391,
"container": {
"title": "something",
"category": "something",
"place": {
"id": "4f58e38866eaa71e74000027"
"name": "Some name",
"point" [14.53535, 56.32535],
"hostname": "Something",
"locality": "something",
"type": "Some type"
},
"rows": [
{
"_score": 183.96391,
"name": "Something",
"description": "Something"
"price": 45,
"markings_array" ['some_tag', 'some_tag']
},
{
"_score": 133.96391,
"name": "Something",
"description": "Something"
"price": 45,
"markings_array" ['some_tag', 'some_tag']
},
{
"_score": 123.96391,
"name": "Something",
"description": "Something"
"price": 45,
"markings_array" ['some_tag', 'some_tag']
}
]
}
}]
Строки должны быть упорядочены по их счету.
Как выполнить этот запрос?
Что я делаю сейчас, так это индексирую все поля в каждой строке, а затем выполняю поиск по индексу, содержащему строки.
Чтобы получить желаемый результат, я должен был бы выполнить циклический анализ результатов и сгруппировать их по родителям и т. Д. Проблема заключается в том, что мне также нужно получать оценки на месте или на контейнере, поскольку я буду представлять контейнер с местом и строками в списке. 1037 *
Есть ли лучший способ сделать это?
Спасибо