Насколько я знаю, когда я объявил объект как вложенный, он создал массив, подобный структуре, для хранения нескольких объектов этого типа. Это пример сопоставления файла json.
{
"employee": {
"dynamic": "strict",
"properties": {
"id": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"previous_job_documents": {
"type": "nested",
"properties": {
"id": {
"type": "keyword"
},
"status": {
"type": "keyword"
},
"type": {
"type": "integer"
}
}
}
}}}
Образцы данных, извлеченные из elasti c.
"data": {
"nodes": {
"totalCount": 465,
"edges": [
{
"id": "b6ecb8aa-4d12-44d6-8ed7-9ee1003d0d54",
"name": "test",
"previous_job_documents": [
{
"type": "RELIEVING_LETTER",
"status": "NOT_SUBMITTED"
},
{
"type": "OFFER_LETTER",
"status": "SUBMITTED"
},
{
"type": "PAYSLIP_FIRST_MONTH",
"status": "VERIFIED"
},
{
"type": "PAYSLIP_SECOND_MONTH",
"status": "NOT_SUBMITTED"
},
{
"type": "PAYSLIP_THIRD_MONTH",
"status": "NOT_SUBMITTED"
}
]
}
]
}}}
Проблема: я хочу написать фильтр, который найдет всех сотрудников, чье имя - test, а RELIEVING_LETTER НЕ_ПОДАЧЕНО и OFFER_LETTER ОТПРАВЛЕНО.
Это то, что я пробовал в фильтре:
{
"filters": {
"Employee":
{"AND": [{"name": "test"},
{
"path": "previous_job_documents"
"AND": [
{
"term": {
"previous_job_documents.type": {
"value": "RELIEVING_LETTER"
}
}
},
{
"term": {
"previous_job_documents.status": {
"value": "NOT_SUBMITTED"
}
}
},
{
"term": {
"previous_job_documents.type": {
"value": "OFFER_LETTER"
}
}
},
{
"term": {
"previous_job_documents.status": {
"value": "SUBMITTED"
}
}
}
]
}
]
}
}
}