我使用冒号(:)时正则表达式中断

时间:2019-05-03 10:33:07

标签: regex elasticsearch

我刚开始进行弹性搜索。通过开始工作,我的意思是我必须查询已经运行的弹性数据库。他们遵循的正则表达式是否有很好的文档。我知道他们的官方网站上的那个,但不是很有帮助。

更具体的问题是我想查询以下行:

10:02:37:623421|0098-TSOT {TRANSITION} {ID} {1619245525} {securityID} {} {fromStatus} {NOT_PRESENT} {toStatus} {WAITING}

01:01:36:832516|0058-CT {ADD} {0} {3137TTDR7} {23} {COM} {New} {0} {0} {52} {1}

以及更多类似的结构。我不要通用的正则表达式。如果可能的话,有人可以给我每一个可以弹性运行的正则表达式吗?

我注意到,当我运行regexp时,如果正则表达式也与子字符串匹配,那么它也会匹配:

query = {"query":
             {"regexp":
                  {
                      "message": "[0-9]{2}"
                  }
              },
         "sort":
             [
                 {"@timestamp":"asc"}
             ]
         }

但是如果我使用,它将不匹配任何内容

query = {"query":
             {"regexp":
                  {
                      "message": "[0-9]{2}:.*"
                  }
              },
         "sort":
             [
                 {"@timestamp":"asc"}
             ]
         }

我想编写更具体的正则表达式,并且对于顶部附近给出的两个示例而言,它们是不同的。

1 个答案:

答案 0 :(得分:0)

原来我的消息以令牌化形式而不是原始形式出现,并且:是令牌化程序的默认定界符之一,具有弹性。作为一个原因,我不能对整个消息使用正则表达式查询,因为它分别与每个令牌匹配。