gpt4 book ai didi

elasticsearch - 合并第一个滤波器的输出作为第二个滤波器的输入

转载 作者:行者123 更新时间:2023-12-02 22:10:52 32 4
gpt4 key购买 nike

我们有一个带有两个标记字段的条目的 elasticsearch 实例。

  • sessionid
  • 消息

  • 在第一个过滤器中,我找到消息包含某个子字符串的所有条目。每个条目都包含一个 sessionid,

    在第二个过滤器中,我想找到所有消息,其中 sessionid 与第一个过滤器返回的 sessionid 匹配。此过滤器应再次检查所有条目。

    示例,在下面的日志中(sessionid;message)
    1234;miss 1
    2456;miss 2
    1234;match

    在消息部分过滤字符串“match”时,我会得到组合查询的输出:
    1234;miss 1
    1234;match

    我们正在使用 KQL。

    背景:我们想要一种在多线程环境中通过消息中的错误字符串跟踪完整流程的简单方法。

    最佳答案

    我理解为什么你想一次性完成,但在 ElasticSearch 中这是不可能的。您不能“重新访问”已被其他查询排除的文档——搜索 match 将取消所有 miss 的资格。

    不幸的是,您将日志消息与 ID 结合在一起,但您可以尝试以下操作:

  • 找到所有匹配的 match(双关语)——我假设你确实有一个 keyword 字段可用
  • GET your_index/_search
    {
    "query": {
    "regexp": {
    "separated_msg.keyword": ".*\\;match.*"
    }
    }
    }
  • 对命中进行后处理并提取 session ID
  • 运行 session ID 匹配:
  • GET your_index/_search
    {
    "query": {
    "regexp": {
    "separated_msg.keyword": "1234;.*"
    }
    }
    }

    或使用 bool should 在多个 ID 上:
    GET your_index/_search
    {
    "query": {
    "bool": {
    "should": [
    {
    "regexp": {
    "separated_msg.keyword": "1234;.*"
    }
    },
    {
    "regexp": {
    "separated_msg.keyword": "4567;.*"
    }
    }
    ]
    }
    }
    }

    关于elasticsearch - 合并第一个滤波器的输出作为第二个滤波器的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60415390/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com