ELK查詢指令-類似where的搜索條件-數字和日期搜索

前言

在用MySQL時,常常會用到類似底下的語法
SELECT 'name', 'id' FROM 'mytable' WHERE name = 'myname'
SELECT 'name', 'id' FROM 'mytable' WHERE id BETWEEN 10 AND 20

這邊牽涉到文字的比對和數字的比對
ELK在數字的比對,與SQL的思維很像,只是語法不同
但ELK在文字的比對有一些眉角在,需要先知道ELK怎麼處理文字,才能知道怎麼下條件
先從簡單的數字和日期比對開始

PS : 從這篇開始不會提到URL的部分,如想了解URL格式可參考此文章

數字的比對
GET myindex/_search
{
  "query": {
    "range": {
      "欄位": {
        "gte": "12",
        "lt": "15"
      }
    }
  }
}

時間的比對
如果目標欄位的類型是 date,可以直接進行時間的搜索
GET myindex/_search
{
  "query": {
    "range": {
      "timestamp": {
        "gt": "2020-03-02",
        "le": "now-2h"
      }
    }
  }
}


range
搜索一個範圍內的東西,包括數字、時間和文字
不建議使用range的方式搜索文字,elasticsearch實際上還是會對個別的可能性進行term搜索
gt
大於,不等於
gte
大於,等於
lt
小於,不等於
lte
小於,等於



日期運算方法有兩種

日期的加減
日期 + 時間 或 日期 - 時間
2020-02-05+1M
變成 2020-03-05

2020-02-05T15:33:12-1m
變成 2020-03-05T15:32:12

round down
重設日期為相對單位的初始值
日期/時間單位

2020-02-05/M
變成 2020-02-01

2020-02-05+1M/M
變成  2020-03-01

2020-02-05T15:33:12/d
變成  2020-02-05T00:00:00

日期的運算格式在這邊可以看到
PS : T只是一個符號,代表從這個符號之後是時間



日期運算的寫法也有兩種
PS : 兩者沒有差異
直接加上運算符號
2020-02-05+1M/M

使用 || 符號
2020-02-05||+1M/M



範例參考
分數大於等於80
{
  "query": {
    "range": {
      "score": {
        "gte": "80"
      }
    }
  }
}

速度不足50,不包括50
{
  "query": {
    "range": {
      "speed": {
        "lt": "50"
      }
    }
  }
}

花費在100-200之間,包含100和200
{
  "query": {
    "range": {
      "cost": {
        "gte": 100,
        "lte": "200"
      }
    }
  }
}

10分鐘之前
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-10m",
        "lte": "now"
      }
    }
  }
}

從現在往前回算1個月
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-1M",
        "lte": "now"
      }
    }
  }
}

上個月初到這個月初,不包括這個月初
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-1M/M",
        "lt": "now/M"
      }
    }
  }
}

昨天零時到今天零時,不包括今天零時
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-1d/d",
        "lt": "now/d"
      }
    }
  }
}




留言

此網誌的熱門文章

WPA_supplicant的設定方式

DOS指令 -- SET和變數

Nginx server 和 location 優先順序