2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[8.16.0] Kibana Dev Consoleでの入力をPython及びJavascriptのコードに出力する

Last updated at Posted at 2024-12-02

はじめに

KibanaのDev Console(Dev Toolsの機能)はElasticsearchのAPIを試すのに非常に有用なツールです。
https://www.elastic.co/guide/en/kibana/current/devtools-kibana.html
これまではDev Consoleで試したAPI入力をcURL形式で出力する方法はサポートされていましたが、8.16より新しくPythonとJavascriptのコードの形で出力できるようになりました。
https://www.elastic.co/guide/en/kibana/current/console-kibana.html#import-export-console-requests
今回は上記の機能に加えて8.16で追加になった履歴機能なども紹介していきます。

Dev Tools

開発者用の便利機能集です。

  • Dev Console
    • 今回紹介する機能
  • Search Profiler
    • 検索にかかった時間など詳細に調べるための機能
  • Grok Debugger
    • Grokパターンツール
  • Painless Lab
    • Painlessスクリプトツール

Dev Consoleとは?

左上の3本線=>Managementの下のDev Toolsをクリックすると、デフォルトでDev Consoleが開きます。8.16から以下のようになりました。
スクリーンショット 2024-11-25 10.07.59.png
地味ですが以下の2つの機能がかなり嬉しいです。

  • Clear this input
    • これまでは長くなると自分で消すしかなく面倒でしたがクリック一つで消えるようになりました。
    • 消す前に右上にあるExport requestsを実行しておくとテキストファイルとして残せます
    • 保存したテキストファイルはImportもできます
  • History
    • みんな欲しかったんじゃないでしょうか。履歴はブラウザに保存されているのでブラウザの履歴を消すとDev Consoleの履歴も消えます。右下のAddをクリックすると選択しているものがDev Consoleにコピーされます。いや便利。
      スクリーンショット 2024-11-25 10.48.58.png

Dev Consoleの簡単な紹介

名前の通り開発者向けではありますが、ちょっと調べたいときには使えるので簡単に紹介しておきます。
基本的には下記に記載のあるAPIを実行するためのツールです。
https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html
例えば検索では以下のように使います。
seminarというインデックスに対して、descriptionフィールドにある全文検索でテストというキーワードを探す、というものです。

GET seminar/_search
{
  "query": {
    "match": {
      "description": "テスト"
    }
  }
}

インデックスを作成したり、設定の変更などにはPUTやPOSTを利用します。
よく使うのはクラスタの状態を確認する_catAPIです。
GET _cat/indices?vと入力して、赤く囲った三角をクリックすると実行されます。
スクリーンショット 2024-11-25 14.08.16.png
右側が実行結果ですが、これはインデックスの一覧が表示されています。
?vをつけることで一番上に表示されている情報が何かというのが示されています。

Code Exportの機能

Code ExportはDev Consoleで実行したものを外部から実行する際のコードとして出力するものです。これまではcURLコマンドとして出力できました。
実行するための右矢印の横にある3つの点をクリックするとCopy as curlというのが出てきます。
スクリーンショット 2024-11-25 11.35.40.png
クリップボードにコピーされているので、テキストエディタ等に貼り付けると以下のように表示されます。
(URLの部分は一部隠してあります)

curl -X GET -H "Content-Type: application/json" -d '{"query":{"match":{"description":"テスト"}}}' "https://xxxxxx.asia-northeast1.gcp.cloud.es.io:443/seminar/_search"

これをshなどで実行するとDev Consoleで表示されたものと同じものが返ってきます。
ここにAuthenticationの情報はないのでそれは追加する必要はあります。
例えば、以下のようにelasticユーザとパスワードを指定します。

curl -X GET -u elastic:hogehoge -H "Content-Type: application/json" -d '{"query":{"match":{"description":"テスト"}}}' "https://xxxxxx.asia-northeast1.gcp.cloud.es.io:443/seminar/_search"

PythonでのExport

Copy as curlの横にchangeとあるので、それをクリックすると以下のようになります。
スクリーンショット 2024-11-25 14.23.25.png
ここでPythonを選び、Copy codeをクリックするとPythonコードがクリップボードにコピーされるので、テキストエディタに貼り付けてみます。

import os
from elasticsearch import Elasticsearch

client = Elasticsearch(
    hosts=["https://xxxxxxxx.asia-northeast1.gcp.cloud.es.io:443"],
    api_key=os.getenv("ELASTIC_API_KEY"),
)

resp = client.search(
    index="seminar",
    query={
        "match": {
            "description": "テスト"
        }
    },
)
print(resp)

ELASTIC_API_KEYというAPIキーでアクセスする形のコードが出てきています。
このAPIキーは以下のページに説明があります。
https://www.elastic.co/guide/en/kibana/current/api-keys.html

デフォルト出力をPythonにする

以下の画面でSet as defaultをクリックするとPythonがデフォルトのExportに切り替わります。
スクリーンショット 2024-11-25 14.35.24.png
スクリーンショット 2024-11-25 14.36.33.png

JavascriptでのExport

Javascriptで出力すると以下のようになります。

const { Client } = require("@elastic/elasticsearch");

const client = new Client({
  nodes: [
    "https://xxxxxxxx.asia-northeast1.gcp.cloud.es.io:443",
  ],
  auth: {
    apiKey: process.env["ELASTIC_API_KEY"],
  },
});

async function run() {
  const response = await client.search({
    index: "seminar",
    query: {
      match: {
        description: "テスト",
      },
    },
  });
  console.log(response);
}

run();

まとめ

こちらの機能を利用することで、まずDev Consoleで動きを確かめてから、PythonやJavascriptで本格的にコーディングに入る、という効率的な開発を行うことができます。
新しくなったDev Consoleを是非お試しください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?