Как избежать перекрестного поиска объектов с вложенными типами в упругом поиске
Я пытаюсь определить наилучший способ индексации документа в упругом поиске. У меня есть документ 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».
Тем не мение,в соответствии с документами:
Одна из проблем при индексации внутренних объектов, которые встречаются в документе несколько раз, заключается в том, что будет найдено совпадение поиска «перекрестный объект».
Есть ли способ избежать такого поведения с вложенными типами, или я должен исследовать другой тип?
Дополнительная информация относительно выполнения таких запросов была бы очень ценной. Просто прочитав документы, он заявил, что вложенные запросы не слишком отличаются с точки зрения производительности по сравнению с обычными запросами. Если у кого-то есть реальный опыт этого, я хотел бы услышать это.