Конечно, вам следует избегать родительского или дочернего типа, потому что они являются дорогостоящими в вычислительном отношении. лучший способ установить связь с большим количеством данных - это денормализовать ваши данные и поместить их в разные индексы. Пожалуйста, прочитайте здесь и здесь . Пример:
PUT notification
{"mappings": {
"properties": {
"content": {
"type": "text"},
"id_notification":{
"type":"keyword" }{
}}
}
}
Тогда индекс пользователя:
PUT user
{"mappings": {
"properties": {
"general_information": {
"type": "text"},
"id_user":{
"type":"keyword" }{
}}
}
}
еще один индекс для отношений:
PUT seen
{"mappings": {
"properties": {
"seen": {
"notification_id":{
"type": "keyword",
"fields":{
"user_id":{
"type":"keyword"}}},
"unseen":{
"notification_id":{
"type": "keyword",
"fields":{
"user_id":{
"type":"keyword"}}}}
}
}
Извините за текстовый формат, у меня сейчас нет кибаны. Следует обратить внимание, что для перехода от информационных индексов - пользователя, уведомления - к индексу поддержки - видно - необходимо сделать многоиндексный запрос - выполните c здесь . это будет работать, потому что имя и значения полей - user_id, messages_id - одинаковы в разных индексах. Подполя user_id в видимом индексе являются массивом ключевых слов. Однако вы можете сделать user_id единственным ключевым словом и родителем поля array_id ключевого слова messages. В каждом случае они сохраняют отношения один ко многим, лучший выбор зависит от ваших данных