Elasticsearch, тип данных соединения: единый тип сопоставления для родительских и дочерних полей - PullRequest
3 голосов
/ 06 мая 2020

Я хочу реализовать отношения родитель / потомок между двумя сущностями X и Y с совершенно разным набором полей для каждого в Elasticsearch 6.3.2. Я собирался создать два файла сопоставления для каждой ассоциации и определить поле _parent на дочерней стороне.

Но согласно документации ES, начиная с 6.x несколько типов больше не поддерживаются в одном индексе.

Итак, с этим ограничением, следует ли мне поместить все поля для объекта X и Y в один файл сопоставления? Если да, то что, если у меня одно и то же поле, скажем name в обоих объектах. Назвать их x.name и y.name? Какой здесь подход?

1 Ответ

1 голос
/ 06 мая 2020

Родительские дочерние документы находятся в том же индексе.

Пример

Parent document:
Post index-name/_doc/1  
{
  "my_id": "1",
  "text": "This is a question",
  "my_join_field": "question" 
}

Child Document:
Post index-name/_doc/2
{
  "my_id": "2",
  "text": "This is answer",
  "my_join_field": {
    "name": "answer", 
    "parent": "1" 
  }
}

Выше указаны одинаковые поля, они могут иметь разные поля. В этом случае поля в одном документе будут иметь значение NULL, а в другом - значение. Тип соединения используется для идентификации родительского и дочернего документа

...