Elasticsearch Query String 正则表达式

2019-07-05  本文已影响0人  歌哥居士
  1. 似乎不支持转义符,反正我试了不行,一个\\s可以用.{1}或者一个空格代替(我简单试了下空格的效率高点,数据量不大,测试不出来),\\d改用[0-9]

  2. 普通字段做分词只能匹配单个单词或者使用双引号进行词条(term)匹配,要想匹配整条数据可以用子字段keyword。

  3. 目前有感觉的keyword字段的应用场景就是这了,用来匹配整条内容。

  4. 官网说的正则表达式以^开头,以$结尾,加上之后就会发现匹配不到,去掉就可以。

  5. 测试语句。

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"]
}
上一篇 下一篇

猜你喜欢

热点阅读