elastic search regex query to search string starts with number

时间:2017-12-18 06:43:07

标签: elasticsearch

i am not able to search string start with number

PUT music/song/1?refresh
{
    "suggest" : [
        {
            "input": "123hello",
            "weight" : 3
        }
    ]
}

i have tried the following regex query

POST music/_search?pretty
{
    "suggest": {
        "song-suggest" : {
            "regex" : "^[0-9].*$",
            "completion" : {
                "field" : "suggest"
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您应该尝试[0-9]*.*

关键是lucene regexp不会使用'^''$'作为字符串开头和结尾的符号来锚定yor模式。实际上,lucene中的regexp默认锚定到整个字符串see

  

大多数正则表达式引擎允许您匹配字符串的任何部分。如果你想让regexp模式从字符串的开头开始或者在字符串的结尾处完成,那么你必须专门锚定它,使用^表示开头或$表示结束。

     

Lucene的模式总是固定不变的。提供的模式必须与整个字符串匹配。

另见我非常相似的question。特别是如果你的字段可能超过256个字符。

不知道问题是否仍然存在,所以我就把它留在这里。