elasticsearch - Elasticsearch 对带有消息过滤的 ID 进行查询 + 不存在不同消息的过滤器
问题描述
我需要根据消息和 ID 查询一些 Elastisearch 日志。
简化的场景如下:每分钟处理一个案例。如果完成,我们有一个日志“COMPLETED”,否则“NOT COMPLETED”。
案例可以重新处理,因此未完成的案例可以在下次工作时完成。我想检索所有尚未完成的案例。
示例数据表是:
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 的新手,在阅读了一些示例后,我尝试了不同的聚合,但它们不起作用。
感谢任何会提供帮助的人
解决方案
推荐阅读
- ruby - Rspec:失败/错误:ActionCable.server.pubsub.redis_connection_for_subscriptions.smembers “在线”
- java - Spring 多个自动装配的单例实例
- javascript - 如何在每个数据上传到服务器时显示进度或加载栏,并在通过时显示成功消息
- ios - 尝试在 Swift iOS 中缩短 url 时,在范围内找不到“linkBuilder”错误
- assembly - 当全局变量名称长于一个制表符空间时,MIPS 缩进
- javascript - 如何使用 React onScroll 触发动画?
- python - 响应状态代码出现问题,表示未定义响应
- git - 无法从 terraform 注册表下载模块
- types - 与 `.enumerate()` 不匹配的类型:预期类型 `u8`,找到参考 `&_`
- java - 将 byte[] 转换为 ISO-8859-15 或 utf-8