【Elasticsearch】ローカル環境でElasticsearchを試してみる
はじめに
お世話になります、hosochinです
今回はElasticsearchをローカル環境で試してみた話です
目次
Elasticsearchとは
環境構築
- Elasticsearch をダウンロードする (この時のバージョンは 8.7.0)
- ダウンロードした tar.gz ファイルを解凍
- elasticsearch-8.7.0 の直下に移動
$ cd elasticsearch-8.7.0
- 日本語プラグインをインストール
$ bin/elasticsearch-plugin install analysis-kuromoji
- 起動させる(1 分くらいかかる)
$ bin/elasticsearch
- http://localhost:9200 にアクセスして json が表示されたら成功
うまくいかない場合
こんなエラーが出力されているとき:
received plaintext http traffic on an https channel, closing connection Netty4HttpChannel
- config/elasticsearch.yml を修正する
xpack.security.enabled
がtrue
になっていると思うので、false
に変更する- 再起動してやる
動作確認
ドキュメントを投入する
curl -H "Content-Type: application/json" -X POST "http://localhost:9200/myindex/_doc/1" -d @example1.json
example1.json
{
"firstname": "Taro",
"lastname": "Suzuki"
}
投入したドキュメントを確認する
$ curl -X GET "http://localhost:9200/myindex/_doc/1" | jq
{
"_index": "myindex",
"_id": "1",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"found": true,
"_source": {
"firstname": "Taro",
"lastname": "Suzuki"
}
}
ドキュメントの検索
全てのドキュメントを検索
-- リクエストパラメータ方式
$ curl -X GET "http://localhost:9200/myindex/_search?q=firstname:Taro" | jq
-- リクエストボディ方式
$ curl -H "Content-Type: application/json" -X GET "http://localhost:9200/myindex/_search" -d '{"query": {"match": {"firstname": "Taro"}}}' | jq
他にも AND 条件、OR 条件、数値の検索、フィルターつけたり、スコアに重み付けしたり…めっちゃ色々ある
詳しくはこちら
ドキュメントの更新
curl -H "Content-Type: application/json" -X PUT "http://localhost:9200/myindex/_doc/1" -d @example2.json
example2.json
{
"firstname": "Ichiro",
"lastname": "Suzuki"
}
ドキュメントの削除
curl -X DELETE "http://localhost:9200/myindex/_doc/1"
Kibana も試してみる
Kibana とは
- Elasticsearch の可視化ツールみたいなやつ
- Elasticsearch データの可視化
- Elastic Stack の制御
- クエリの負荷の追跡
- アプリ内部のリクエストフローの把握
- 公式ドキュメント
Kibana の環境構築
- Kibana をダウンロードする
- 起動させる(1 分くらいかかる)
$ bin/kibana
- http://localhost:5601/ をブラウザで開く
- http://localhost:5601/app/dev_tools でコンソールが開かれる → ターミナルから curl してたのは全てこのコンソールから実行可能
まとめ
Elasticsearchのローカル環境構築から基本的なCRUD操作まで試してみました。Kibanaとの連携により、データの可視化や管理が簡単にできるようになります。全文検索やデータ分析に強力な機能を提供してくれる優秀なツールです。