在kibana上通过正则表达式搜索数组元素

时间:2017-05-24 09:43:01

标签: regex elasticsearch kibana

我正在搜索包含数组字段payload.params

的记录

我想显示所有只包含一个单词的字段

示例:

payload.params = [3raabb, two words!! , one_word]

payload.params = [1111, hello world , 2222]

显示:3raabb, one_word, 1111, 2222

尝试:

{
  "query": {
    "regexp": {
      "payload.params": "[A-Za-z0-9_]*"
    }
  }
}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

要在查询中使用正则表达式,请使用Regexp query。请注意,ElasticSearch正则表达式的风格是 Lucene ,它是一种非常具体的正则表达式。

Lucene regular expressions中,^$不是保留字符,它们被视为常规文字字符。此外,大多数类似Perl的速记字符类也不受支持。由于\w基本上类似于[A-Za-z0-9_],因此您可以使用此替换代码中的\w

{
  "query": {
    "regexp": {
      "payload.params": "[A-Za-z0-9_]+(, [A-Za-z0-9_]+)*"
    }
  }
}