Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Runtime Field Deep Dive

Runtime Field Deep Dive

第51回Elasticsearch勉強会
「Runtime Field Deep Dive」

Avatar for Hiroshi Yoshioka

Hiroshi Yoshioka

December 14, 2022
Tweet

More Decks by Hiroshi Yoshioka

Other Decks in Technology

Transcript

  1. 1 Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    Runtime Field Deep Dive 2022/12/14 Acroquest Technology株式会社 Senior Consultant / Full stack Elastic Certified 吉岡 洋 @Hirosh_Yoshioka 第51回Elasticsearch勉強会
  2. 自己紹介 Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    • アクロクエストテクノロジー株式会社 • 吉岡 洋(@Hirosh_Yoshioka) • 業務:Elastic Stackのコンサルティング全般 (全文検索/ログ分析/セキュリティ分析/可視化) • その他 ◦ 世界初のElastic Certified Engineer (Elastic Certification 3種取得) ◦ 日本初のElastic社認定コンサルタント ◦ Elastic Contributor Silver(日本1位) ◦ Elastic User Group Tokyo運営
  3. はじめに Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    1. 話すこと ①Runtime Fieldの概要 ②実装が楽になるフィールド値の取得方法 ③便利なユースケース 2. 話さないこと ①実装の解説
  4. Runtime Fieldって何ができるの? Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. Schema on Readを実現するスクリプト付きフィールド ① Mappingまたはクエリに「スクリプト付きフィールド」を定義し、 クエリ実行時に動的にスクリプトを実行し、データ加工を行う。 ② データ投入前のスキーマ設計をしなくても、 データを登録した後で、必要に応じて柔軟に加工することが可能。 ③ 各VisualizeはRuntime Fieldをサポートしており、 データ加工/可視化のサイクルをクイックに回すことができる。
  5. スクリプト作成において必要な前提知識は? Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    DocValue ① 登録データを集計/ソート向けに最適化したデータ。 通常、フィールド値はDocValueから取得する。 ② データ登録時のJSON。DocValueが生成されない text型はSourceからデータを取得する。 ③ Elasticsearchにおけるスクリプト言語。 データ加工はPainlessで実装する。 Source Painless https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting-painless.html Vegaでも 利用可能
  6. Runtime Fieldの実行イメージ(Webサーバログ) Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. DataView画面 フィールド名と データ型を指定 ここにスクリプトを入力
  7. Runtime Fieldの実行イメージ(Webサーバログ) Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. Discover画面 通常フィールド Runtime Field Visualize(Lens)
  8. フィールド値を取得するには? Copyright © Acroquest Technology Co., Ltd. All rights reserved.

    DocValue 取得 Source 取得 兼用 (お勧め) doc[‘フィールド名'].value 例)doc['response'].value params._source.フィールド名 例)params._source.response $(‘フィールド名’,<初期値>) 例)$('response’,0) field(‘フィールド名’).get(<初期値>) 例)field(‘response’).get(0) ・DocValueから値を取得。 ・DocValueが存在しない場合は Sourceから取得。 ・Nullの場合は初期値を返却。 →Nullチェックが不要 text型以外のフィールド値の取得(要Nullチェック) text型のフィールド値の取得(要Nullチェック) DocValue/Source兼用の処理(2パターン)
  9. Runtime Fieldの便利なユースケース Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 計算 ① 既存フィールドを利用した四則演算 例)税込小計フィールド(単価フィールド x 個数フィールド x 1.10 ) ① 既存フィールドのフィールド名を変更せずにデータ型を変更(2) 例)Keyword→Date(日付のフォーマットミスでkeywordになってしまった!) 型変換 ① 既存フィールドのフィールド名を変更せずにデータ型を変更(1) 例)Keyword→Long (”100”で登録してしまい、keywordになってしまった!)
  10. Runtime Fieldの便利なユースケース Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 文字列 計算 ① URLフィールドから「ドメイン名」を抽出してTOP10集計 ② 2つの日時フィールドのDuration(差分)を計算。 日付 ① 日付フィールド(Keyword)と時刻フィールド(Keyword)を 結合した日時フィールド(Date)を生成
  11. Runtime Fieldの便利なユースケース Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. 可視化 ② Sourceにしか存在しないフィールドを可視化する 例)Elastic SecurityのPrebuild Rule ① Discover表示時に文字列を別名にLookup
  12. Runtime Fieldのまとめ Copyright © Acroquest Technology Co., Ltd. All rights

    reserved. ぜひRuntime Field使ってみてください! 1) Schema on Readを実現するスクリプト付きフィールド 2) データを登録した後で、必要に応じて柔軟に加工することが可能 3) Runtime Fieldを利用することで、可視化の幅が大きく広がる