在Elasticsearch中提取路径的所有子文件夹

时间:2017-08-23 14:31:31

标签: regex elasticsearch

我想在elasticsearch中的路径字段中提取所有直接子文件夹。

例如,我想要此路径的所有子文件夹:/ path / to / file

这些网址应与

匹配
/path/to/file/subfolderA
/path/to/file/subfolder-b
/path/to/file/subfolder_c

这些网址不匹配

/path/to/file/subfolderA/folderc
/path/to/file/subfolder-b/folderd/folderE

我试过这个正则表达式查询,但它不起作用。带/的部分不起作用。但当我用字母替换de /时,查询起作用。我试图用\来逃避/但是它也没有用。

POST index_name/_search
{
  "query": {
      "regexp":{
          "path_parent": "(/path/to/file/.*)&~(.*/.*)"
       }
}

1 个答案:

答案 0 :(得分:1)

您可以使用否定的字符类:

"path_parent": "/path/to/file/[^/]*"
                              ^^^^^

由于ElasticSearch模式默认是锚定的,因此该模式将匹配以/path/to/file/开头的所有路径,然后是除/以外的0 +字符,后跟字符串结尾。