В запросе эластичного поиска я пытаюсь найти объекты документа, которые имеют массив уведомлений об утверждении.Уведомления считаются завершенными, когда dateCompleted
заполнен датой, и считаются ожидающими, когда либо dateCompleted
не существует, либо существует с null
.Если документ не содержит массив уведомлений об утверждении, он выходит за рамки поиска.
Мне известно о том, что для поля dateCompleted
нужно указать null_value
и установить для него произвольную старую дату, ноэто кажется мне хакерским.
Я пытался использовать запросы Bool с must exist doc.approvalNotifications and must not exist doc.approvalNotifications.dateCompleted
, но это не работает, если документ содержит сочетание полных и ожидающих утверждения уведомлений.например, он возвращает только документ с идентификатором 2 ниже.Я ожидаю, что будут найдены документы с идентификаторами 1 и 2.
Как найти ожидающие уведомления об утверждении с использованиемasticsearch?
PUT my_index / _mapping / Document
"properties" : {
"doc" : {
"properties" : {
"approvalNotifications" : {
"properties" : {
"approvalBatchId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"approvalTransitionState" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"approvedByUser" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"dateCompleted" : {
"type" : "date"
}
}
}
}
}
}
Документы:
{
"id": 1,
"status": "Pending Notifications",
"approvalNotifications": [
{
"approvalBatchId": "e6c39194-5475-4168-9729-8ddcf46cf9ab",
"dateCompleted": "2018-11-15T16:09:15.346+0000"
},
{
"approvalBatchId": "05eaeb5d-d802-4a28-b699-5e593a59d445",
}
]
}
{
"id": 2,
"status": "Pending Notifications",
"approvalNotifications": [
{
"approvalBatchId": "e6c39194-5475-4168-9729-8ddcf46cf9ab",
}
]
}
{
"id": 3,
"status": "Complete",
"approvalNotifications": [
{
"approvalBatchId": "e6c39194-5475-4168-9729-8ddcf46cf9ab",
"dateCompleted": "2018-11-15T16:09:15.346+0000"
},
{
"approvalBatchId": "05eaeb5d-d802-4a28-b699-5e593a59d445",
"dateCompleted": "2018-11-16T16:09:15.346+0000"
}
]
}
{
"id": 4
"status": "No Notifications"
}