はじめに
ES|QLというクエリー言語が新たにElastic v8.11でテクニカルプレビューとして登場しました。フリー版から使えます!
Discoverからログなどの検索をする時に、もはや必須のツールとなると思うので、ぜひみなさんも試してください。
この記事では今の所わかっているTipsをまとめました。(まだGAではないので、多少仕様が変わる可能性はなきにしろあらずです)
基本的な構文や関数に関してこちらのマニュアルを参照ください。
https://www.elastic.co/guide/en/elasticsearch/reference/current/esql-language.html
Tips集
日本時刻(JST)でのWhere検索
以下のように行う。(@timestampは内部的にはUTCで保持しているため、こうやらないとUTCベースで検索されてしまう)
where @timestamp >= date_parse("yyyy-MM-dd'T'HH:mm:sszzzz", "2023-11-29T13:00:00+09:00")
and @timestamp <= date_parse("yyyy-MM-dd'T'HH:mm:sszzzz", "2023-11-29T14:00:00+09:00")
フィールドの名前に対してエスケープが必要な場合
例えばスラッシュが含まれるカラムは、バックティックで囲む。
where `kubernetes.labels.app_kubernetes_io/instance` == "abc"
日本時刻(JST)ベースで、例えば朝の6時〜10時のデータを検索したい。
以下の例ではdropoff_datetimeにタイムスタンプデータが入っている前提です。
from nyc_taxis
| limit 10
| EVAL dt_long = to_long(dropoff_datetime)
| EVAL TIMEZONE_DIFF = 9
| EVAL dt_timezone_long = to_long(dt_long + TIMEZONE_DIFF * 60 * 60 * 1000)
| EVAL timezone_date = to_datetime(dt_timezone_long)
| EVAL hour = DATE_EXTRACT(timezone_date, "HOUR_OF_DAY")
| EVAL minute = DATE_EXTRACT(timezone_date, "MINUTE_OF_HOUR")
| WHERE hour >= 6 AND hour <=10
| KEEP dropoff_datetime, timezone_date, hour, minute
Elastic ES|QLでアクセスログの怪しい403の高度なアラート検知をしてみる
別記事: Elastic ES|QLでアクセスログの怪しい403の高度なアラート検知をしてみる
おわり
この記事は、随時何かあれば追加していきたいと思います!