Вы должны использовать вложенный тип вместо объекта
Массивы объектов не работают так, как вы ожидаете: вы не можете запрашивать каждый объект независимо от других объектов вмассив. Если вам нужно это сделать, вы должны использовать вложенный тип данных вместо типа данных объекта.
Подробнее о
Вы можете создать динамическийотображение
PUT my_index
{
"mappings": {
"doc": {
"dynamic_templates": [
{
"objects": {
"match_mapping_type": "object",
"mapping": {
"type": "nested"
}
}
}
],
"properties": {
"id": {
"type": "keyword"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
Или вы можете создать свою собственную схему
PUT my_index
{
"mappings": {
"doc": {
"properties": {
"history": {
"type": "nested",
"properties": {
"login": {
"type": "nested",
"properties": {
"text": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"time": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"logout": {
"type": "nested",
"properties": {
"text": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"time": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
},
"id": {
"type": "keyword"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}