似乎不支持转义符,反正我试了不行,一个
\\s
可以用.{1}
或者一个空格代替(我简单试了下空格的效率高点,数据量不大,测试不出来),\\d
改用[0-9]
。普通字段做分词只能匹配单个单词或者使用双引号进行词条(term)匹配,要想匹配整条数据可以用子字段keyword。
目前有感觉的
keyword
字段的应用场景就是这了,用来匹配整条内容。官网说的正则表达式以
^
开头,以$
结尾,加上之后就会发现匹配不到,去掉就可以。测试语句。
GET filebeat-6.8.1-hercules-*/_search
{
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "message.keyword:/.*spid [0-9]* mo json.*/",
"minimum_should_match": "100%"
}
}
],
"filter": {
"range": {
"@timestamp": {
"gte": "2019-07-04T06:29:37.559Z",
"lte": "2019-07-04T06:29:55.373Z"
}
}
}
}
},
"from": 0,
"size": 10000,
"sort": [
{
"@timestamp": {
"order": "asc"
}
}
],
"_source": ["beat.hostname","message","source","@timestamp"]
}