我有一个方案来使用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 问题解决了。现在我们面临另一个问题,如果路径值有特殊字符,如()&等等我们没有得到任何结果。
我还尝试添加转义特殊字符,但无法获得可接受的结果。