elasticsearch中的正则表达式搜索

2024-10-01 00:35:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图搜索一个看起来像word+word+word的文档列表

有些文档中有数字,比如:word+word+20+word

有些文档前面有数字,比如word+/2+word

我们想要的是查找包含数字的文档,而不是数字中有斜杠的文档。{cd7>{cd6}或word+word或word或{}或{}。在

我试过用

  'query': {
          'filtered': {
                  'query':{
                      'regexp': {
                               'searchterm':'.*[^/][0-9].*'
                              }
                   }
           }
    }

但这似乎行不通。我尝试了很多不同的方法来逃避它,但是我总是用word+/2+word来返回我不想要的结果。在

谢谢!在


Tags: 方法文档列表数字queryfilteredwordregexp
1条回答
网友
1楼 · 发布于 2024-10-01 00:35:09

您可以使用COMPLEMENT operator ^{}

'~(/[0-9])[0-9]~(/[0-9])'

此正则表达式匹配:

  • ~(/[0-9])-不等于/和一个数字的任意数量的字符,然后
  • [0-9]-匹配一个数字,然后
  • ~(/[0-9])-再次匹配不等于/的任意数量的字符和一个数字。在

或者,使用

^{pr2}$

它会匹配的

  • .*[0-9].*-任何包含数字的行
  • &-和
  • ~.*/[0-9].*-不包含/后跟数字。在

相关问题 更多 >