はじめに
みなさん検索システム作ってますか?
Elasticsearch で検索システムを作る際、Elasticsearch に投入したデータの中身を確認したくなること、ありますよね??
- Elasticsearch へデータを送信するシステムが正常に動作しているか確認したい!
- 検索オプションを実装したけど、0件しかヒットしなかった!あれ?該当するデータ入れたっけ?
- などなど...
そんなとき、curl
コマンドで match_all
クエリを投げて調査することも可能ですが、GUI でサクッと確認したいですよね?というわけで、本記事では Elasticsearch に投入したデータを Kibana でサクッと確認する方法を紹介します。
最終的に、以下のように Elasticsearch 内のデータが確認できます。
Elasticsearch に投入したデータを Kibana でサクッと確認する
以下の環境で動作確認しました。
- Ubuntu 20.04
- Elasticsearch 7.10.2
- Kibana 7.10.2
はじめにサンプルデータを投入した Elasticsearch のサーバーを準備する方法を紹介し、次に Kibana でデータをサクッと確認する方法を紹介します。
サンプルデータを投入した Elasticsearch のサーバーを準備する
すでにデータ投入済みの Elasticsearch のサーバーがある場合はこの節はスキップし、「Kibana でデータをサクッと確認する」に進んでOKです!
はじめに Elasticsearch をダウンロードします。公式ドキュメントに記載されている方法を参考にしました。
以下コマンドでダウンロード & 展開 & 起動します。
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz
tar -xzvf elasticsearch-7.10.2-linux-x86_64.tar.gz
cd elasticsearch-7.10.2
./bin/elasticsearch
起動できたら、以下のように確認してみましょう。
$ curl http://localhost:9200/
{
"name" : "XXXXXXXXXXXX",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "PREUZaNLQeWk7XBeFHt39Q",
"version" : {
"number" : "7.10.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"build_date" : "2021-01-13T00:42:12.435326Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
次はサンプルデータを投入します。以下ドキュメントのサンプルデータを投入する方法を参考にしました。
以下で Elasticsearch 用のシェイクスピアのサンプルデータが取得できます。
$ curl -O https://download.elastic.co/demos/kibana/gettingstarted/7.x/shakespeare.json
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 24.1M 100 24.1M 0 0 8333k 0 0:00:02 0:00:02 --:--:-- 8330k
$ ls
shakespeare.json
データを登録するために、マッピングを作成しましょう。
curl -X PUT "localhost:9200/shakespeare?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"speaker": {"type": "keyword"},
"play_name": {"type": "keyword"},
"line_id": {"type": "integer"},
"speech_number": {"type": "integer"}
}
}
}
'
そして、以下コマンドでデータを投入します。
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
以下コマンドでインデックスを確認すると、111,396 件登録できたようです。
$ curl -XGET 'localhost:9200/_cat/indices?v'
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open shakespeare oZy1_qOsSpuEIe9jEjE6pg 1 1 111396 0 18.1mb 18.1mb
これで Elasticsearch へのデータの投入が完了し、準備が整いました。
Kibana でデータをサクッと確認する
Kibana をインストールします。以下ドキュメントを参考にしました。
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz
curl https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz.sha512 | shasum -a 512 -c -
tar -xzf kibana-7.10.2-linux-x86_64.tar.gz
cd kibana-7.10.2-linux-x86_64/
./bin/kibana
ブラウザで http://localhost:5601 にアクセスし、起動できているか確認します。以下ように表示されていればOKです。
「Exprole on my own」 をクリックします。
Elasticsearch のデータを確認するための設定をしていきます。
右上の「Manage」を開きます。
左サイドバーの下の方にある 「Index Patterns」 を開きます。
ここで、Elasticsearch のインデックスの設定をしていきます。
「index pattern name」 にインデックス名(サンプルデータの場合は shakespeare
)を入れて、「Next step」 をクリック。
次に時間に関するフィールドを選択します。サンプルデータを使う場合は時間に関するフィールドがないので、そのまま「Create index pattern」 でOKです。
これでインデックスの設定が完了したので、早速 Elasticsearch の中身を見ていきましょう。
左上のハンバーガーアイコンからメニューを開き、「Kibana > Discover」を開きます。
すると、以下の画面のように、Elasticsearch の中身が確認できます!!
また、丈夫の入力フォームに Kibana Query Language (KQL) を入力することで、絞り込みも可能です。
(Kibana でインデックスの設定を行った際に時間のフィールドを設定した場合、直近に登録したデータしか表示されない場合があります。その場合はKQLから条件を変更すると、他のデータも見れるようになります。)
Kibana は他にもデータを確認するための便利な機能がたくさんあります。例として以下のようなワードクラウドが表示できます。(Visalizer から Tag Cloud を選択すると表示できます。)
もう一つ紹介しておきたい機能として、Dev Tools では. クエリの編集と実行ができます。便利ですね!
おわりに
Kibana には今回紹介した機能以外にも、たくさんの機能があり、僕自身まだ全然使い切れていないです。
Elasticsearch を使っているなら Kibana は相性がとてもいいので、組み合わせて使うのがおすすめです!