Как избежать перекрестного поиска объектов с вложенными типами в упругом поиске

Я пытаюсь определить наилучший способ индексации документа в упругом поиске. У меня есть документ Doc, в котором есть несколько полей:

Doc
  created_at
  updated_at
  field_a
  field_b

Но у Doc также будут поля, специфичные для отдельных пользователей. Например, field_x будет иметь значение «A» для пользователя 1, а field_x будет иметь значение «B» для пользователя 2. Для каждого документа будет очень ограниченное количество пользователей (обычно 2, до ~ 10). Когда пользователь выполняет поиск по field_x, он должен искать по значению, которое ему принадлежит. Я изучал вложенные типы в ES.

Doc
  created_at
  updated_at
  field_x: [{
    user: 1
    field_x: A
  },{
    user: 2
    field_x: B
  }]

Когда пользователь 1 ищет в field_x значение «A», этот документ должен привести к попаданию. Однако это не следует делать, когда пользователь 1 выполняет поиск по значению «B».

Тем не мение,в соответствии с документами:

Одна из проблем при индексации внутренних объектов, которые встречаются в документе несколько раз, заключается в том, что будет найдено совпадение поиска «перекрестный объект».

Есть ли способ избежать такого поведения с вложенными типами, или я должен исследовать другой тип?

Дополнительная информация относительно выполнения таких запросов была бы очень ценной. Просто прочитав документы, он заявил, что вложенные запросы не слишком отличаются с точки зрения производительности по сравнению с обычными запросами. Если у кого-то есть реальный опыт этого, я хотел бы услышать это.

Ответы на вопрос(1)

Ваш ответ на вопрос