Сложные запросы к родительским / дочерним документам с ElasticSearch - PullRequest
1 голос
/ 09 марта 2012

Учитывая эту структуру записи

"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 *

Есть ли лучший способ сделать это?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...