Elasticsearch/Kibanaのインストールからcliでのデータ操作とブラウザでのデータ確認を試す
Elasticsearchをインストール
Install Elasticsearch from archive on Linux or MacOS | Elasticsearch Reference [7.8] | Elastic
JavaはElasticsearchに同梱されていますので、事前のJavaインストールは不要です。
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz $ tar xvzf elasticsearch-7.8.0-linux-x86_64.tar.gz
同梱されていたJavaのバージョンはこちらです。
$ ./elasticsearch-7.8.0/jdk/bin/java -version openjdk version "14.0.1" 2020-04-14 OpenJDK Runtime Environment AdoptOpenJDK (build 14.0.1+7) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 14.0.1+7, mixed mode, sharing)
ディレクトリ構成
bin/
config/
config/elasticsearch.keystore
は起動すると作成されるファイル
data/
- 起動すると作成されるディレクトリ
jdk/
- 同梱されているJavaランタイム
- バージョン 14.0.1
lib/
- jarファイル群
logs/
- 空
- 起動すると中身が作成される
modules/
- 多数のディレクトリ
plugins/
- 空
Kibanaをインストール
Install Kibana with .tar.gz | Kibana User Guide [5.0] | Elastic
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz $ tar xvzf kibana-7.8.0-linux-x86_64.tar.gz
KibanaはNode.jsで動くようです。同梱されていたNode.jsのバージョンはこちらです。
$ ./kibana-7.8.0-linux-x86_64/node/bin/node --version v10.21.0
ディレクトリ構成
bin/
built_assets/
config/
data/
- 空
- 起動すると中身が作成される
.i18nrc.json
node/
- 同梱されているNodeランタイム
- バージョン 10.21.0
node_modules/
optimize/
package.json
plugins/
- 空
src/
webpackShims/
x-pack/
起動
$ ./elasticsearch-7.8.0/bin/elasticsearch & ./kibana-7.8.0-linux-x86_64/bin/kibana &
コンソールにログが流れていきます。これ以降のコンソールの操作は別のコンソールを開いたほうが見やすいです。
Elasticsearchのデータ操作をコンソールから試す
Elasticsearchはデフォルトでは9200番ポートで動きます。
別のコンソールからアクセスします。
$ curl http://localhost:9200/ { "name" : "9b660779cd64", "cluster_name" : "elasticsearch", "cluster_uuid" : "7dWqEfrWS9akI4NMEzs-ew", "version" : { "number" : "7.8.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65", "build_date" : "2020-06-14T19:35:50.234439Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Elasticsearchに存在するインデックスの一覧を見てみます。
$ curl 'http://localhost:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana-event-log-7.8.0-000001 -TjdCLKQTUqbMPXcvOP2Ew 1 0 1 0 5.2kb 5.2kb green open .apm-custom-link zJ9WU10aQoutF5Uybx3yLQ 1 0 0 0 208b 208b green open .kibana_task_manager_1 7pchraIzSCyzoEcCR3NhHA 1 0 5 15 62.1kb 62.1kb green open .apm-agent-configuration dGJm3UpWT5ClSoxWUbbO0w 1 0 0 0 208b 208b green open .kibana_1 p6eJGY4xSeilbrEOLSznEg 1 0 4 0 31.1kb 31.1kb
なお、Kibanaを起動する前はインデックスは1つもありません。上記5つのインデックスはすべてKibanaが保存したもののようです。
$ curl 'http://localhost:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
items
というインデックスに適当にドキュメントを登録してみます。
$ curl -XPOST -H 'Content-Type: application/json' -d '{"Title":"aaa", "category":"c1"}' 'http://localhost:9200/items/_doc' {"_index":"items","_type":"_doc","_id":"rd5f3nIBOj9gCf2NKvyO","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
インデックスを見てみるとドキュメントが登録されたことを確認できます。
$ curl 'http://localhost:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .kibana-event-log-7.8.0-000001 -TjdCLKQTUqbMPXcvOP2Ew 1 0 1 0 5.3kb 5.3kb green open .apm-custom-link zJ9WU10aQoutF5Uybx3yLQ 1 0 0 0 208b 208b green open .kibana_task_manager_1 7pchraIzSCyzoEcCR3NhHA 1 0 5 0 62.8kb 62.8kb green open .apm-agent-configuration dGJm3UpWT5ClSoxWUbbO0w 1 0 0 0 208b 208b green open .kibana_1 p6eJGY4xSeilbrEOLSznEg 1 0 8 0 44kb 44kb yellow open items 9kI-yvOLSP-wFRWvYltckw 1 1 1 0 4kb 4kb
もう一度適当にドキュメントを登録してみます。POSTするURLの最後にIDを付けると、そのIDでドキュメントが登録されます。
$ curl -XPOST -H 'Content-Type: application/json' -d '{"Title":"bbb", "category":"c2"}' 'http://localhost:9200/items/_doc/2' {"_index":"items","_type":"_doc","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
データを見てみると2つのドキュメントを確認できます。
$ curl -s 'http://localhost:9200/items/_search' | jq . { "took": 874, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 2, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "items", "_type": "_doc", "_id": "rd5f3nIBOj9gCf2NKvyO", "_score": 1, "_source": { "Title": "aaa", "category": "c1" } }, { "_index": "items", "_type": "_doc", "_id": "2", "_score": 1, "_source": { "Title": "bbb", "category": "c2" } } ] } }
登録したインデックスのmappingを見てみます。
$ curl -s 'http://localhost:9200/items/_mapping' | jq . { "items": { "mappings": { "properties": { "Title": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "category": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } }
3つ目のドキュメントを登録してみます。price
というフィールドを追加してみます。
$ curl -XPOST -H 'Content-Type: application/json' -d '{"Title":"ccc", "category":"c3", "price": 9200}' 'http://localhost:9200/items/_doc/3' {"_index":"items","_type":"_doc","_id":"3","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
mappingを見てみるとprice
が増えていることを確認できます。
$ curl -s 'http://localhost:9200/items/_mapping' | jq . { "items": { "mappings": { "properties": { "Title": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "category": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "price": { "type": "long" } } } } }
Kibanaをブラウザから試す
Kibanaはデフォルトでは5601番ポートで動きます。ブラウザでアクセスしてみます。
右の「Explore on my own」をクリック。
左半分にあるメニュー「Discover」をクリック。
Index patternに items
と入れ、「Next step」をクリック。( items*
でもよいです)
「Create index pattern」をクリック。
左のメニューを開いて、
「Discover」をクリック。
すると、さきほどcurlコマンドで入れたデータが見れました。