Мне нужно запросить некоторые журналы Elastisearch на основе сообщения и идентификатора.
Упрощенный сценарий заключается в следующем: каждую минуту дело обрабатывается.Если он завершен, у нас есть журнал «ЗАВЕРШЕНО», в противном случае «НЕ ЗАВЕРШЕНО».
Случаи могут быть обработаны повторно, поэтому НЕ ЗАВЕРШЕННЫЙ случай может быть ЗАВЕРШЕН при следующей работе.Я хочу получить все случаи, которые еще НЕ ЗАВЕРШЕНЫ.
Пример данных:
message CASE_ID
COMPLETED 008
COMPLETED 004
NOT COMPLETED 004
NOT COMPLETED 002
COMPLETED 006
NOT COMPLETED 002
COMPLETED 001
В приведенном выше примере мне необходимо получить случай 002, который еще не завершен.(хронологический порядок снизу вверх)
В SQL это будет выглядеть примерно так:
SELECT CASE_ID
FROM logs l1
WHERE l1.message = "NOT COMPLETED"
AND NOT EXISTS (
SELECT
CASE_ID
FROM
logs l2
WHERE
l2.message = "COMPLETED"
AND l1.CASE_ID = l2.CASE_ID
)
Я новичок в ElastiSearch, и после прочтения некоторых примеров я попробовал различные агрегаты, но они сделалине работает.
Спасибо всем, кто поможет