Запрос Elasticsearch по идентификаторам с фильтрацией сообщений + фильтр не существует для другого сообщения - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно запросить некоторые журналы 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, и после прочтения некоторых примеров я попробовал различные агрегаты, но они сделалине работает.

Спасибо всем, кто поможет

...