Elasticsearch使用正则表达式查询术语的接近程度

时间:2018-03-16 01:28:07

标签: regex elasticsearch elasticsearch-query

我有一个问题,我正在尝试为其创建查询。如果在文本文件中使用正则表达式,正则表达式将类似于

([A-Za-z]{3} [0-9]{5} [0-9]{3} [0-9]{2})

下面将是正则表达式的潜在命中,授予任何随机的字母数字和与该模式匹配的数字应该被视为命中。

TEX 11111 222 22

然而,当在弹性搜索中生成令牌时,它当然会创建4个令牌(下面的标准分析器输出)。由于有4个令牌,标准的elasticsearch regexp查询无法解决问题(正则表达式在生成的令牌上运行)。

问题是如何创建一个弹性搜索查询来捕获该系列标记中的命中(我已尝试使用span_multi进行一些span_near查询,但是即使斜率为0,它也会产生大量误报并且“in_order”设置为true)。

{
  "analyzer" : "standard",
  "text" : "TEX 11111 222 22"
}
'
{
  "tokens" : [ {
    "token" : "tex",
    "start_offset" : 0,
    "end_offset" : 3,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "11111",
    "start_offset" : 4,
    "end_offset" : 9,
    "type" : "<NUM>",
    "position" : 1
  }, {
    "token" : "222",
    "start_offset" : 10,
    "end_offset" : 13,
    "type" : "<NUM>",
    "position" : 2
  }, {
    "token" : "22",
    "start_offset" : 14,
    "end_offset" : 16,
    "type" : "<NUM>",
    "position" : 3
  } ]
}

0 个答案:

没有答案