带有动态字符串的Elasticsearch regexp包含特殊字符

时间:2017-10-26 06:08:00

标签: elasticsearch

我有一个方案来使用regexp搜索elasticsearch的结果,并且regexp表达式与动态字符串和表达式结合使用。有时动态字符串也有特殊字符。这是代码段

filter: {
   bool: {
      must: [
        { term: { 'taxonomies.key' => path_key } },
        { regexp: { 'taxonomies.value' => "#{path_value}(\/.*)?" } }
      ]
   }
}

我的层次结构内容索引类似于文件系统

Folder1  
  - Folder2
    - file 1
  - Folder2 test
    - file 2
  - folder 3 & 4
     - Training (Videos & Log-In Sheets)

早期的代码段就是这个 -

filter: {
   bool: {
      must: [
        { term: { 'taxonomies.key' => path_key } },
        { prefix: { 'taxonomies.value' => path_value } }
      ]
   }
}

最初我使用的前缀匹配对我来说很好,除非用户选择" Folder2",它返回file1和file2两者都是错误的结果然后我们更改 regexp 问题解决了。现在我们面临另一个问题,如果路径值有特殊字符,如()&等等我们没有得到任何结果。

我还尝试添加转义特殊字符,但无法获得可接受的结果。

0 个答案:

没有答案