Elasticsearch, получение объекта против вложенного - PullRequest
0 голосов
/ 26 февраля 2020

Я знаю, object хранит данные в данных flattend, тогда как nested хранит данные отдельно (более похоже на традиционную отдельную таблицу). Поэтому вы должны использовать nested, если хотите обрабатывать внутренний объект как отдельную сущность.

Однако, когда вы извлекаете (через GET-запрос) документы, которые хранятся с использованием object, документ выглядит следующим образом:

{
  id: xxx,
  some_objects : [
  {
    key1: v1,
    key2: v2,
  },
  {
    key1: v12,
    key2: v22,
  },
  ]
}

, тогда как многие документы, объясняющие разницу между объектом / вложенным, подразумевают это должен возвращать что-то вроде (https://web.archive.org/web/20140810095505/http: // www.elasticsearch.org/blog/managing-relations-inside-elasticsearch/)

{
  id: xxx,

  some_objects.key1: [v1, v12],
  some_objects.key2: [v2, v22]
}

1 Ответ

0 голосов
/ 26 февраля 2020

Массив объектов типа object или nested выглядит точно так же в документе JSON. Отличие его заключается в том, как индексируется этот массив, и, следовательно, как его можно запрашивать, и какие результаты вы получите.

То, что вы видите во второй ссылке (то есть во втором фрагменте кода), является иллюстрацией того, как обычный object массив индексируется . Но Elasticsearch никогда не изменит то, что вы отправляете в исходном документе, то есть это всегда будет обычный массив JSON с обычными JSON объектами в нем.

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