【Elasticsearch】ローカル環境でElasticsearchを試してみる

はじめに

お世話になります、hosochinです
今回はElasticsearchをローカル環境で試してみた話です

Elasticsearchとは

環境構築

1. Elasticsearch をダウンロードする (この時のバージョンは 8.7.0)
2. ダウンロードした tar.gz ファイルを解凍
3. elasticsearch-8.7.0 の直下に移動

$ cd elasticsearch-8.7.0

4. 日本語プラグインをインストール

$ bin/elasticsearch-plugin install analysis-kuromoji

5. 起動させる(1 分くらいかかる)

$ bin/elasticsearch

6. http://localhost:9200 にアクセスして json が表示されたら成功

うまくいかない場合(こんなエラーが出力されてるとき)

received plaintext http traffic on an https channel, closing connection Netty4HttpChannel

1. config/elasticsearch.yml を修正する
2. `xpack.security.enabled`が`true`になっていると思うので、`false`に変更する
3. 再起動してやる

動作確認

ドキュメントを投入する

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

esample2.json

{
  "firstname": "Ichiro",
  "lastname": "Suzuki"
}

ドキュメントの削除

curl -X DELETE "http://localhost:9200/myindex/_doc/1"

Kibana も試しみてる

Kibana とは

  • Elasticsearch の可視化ツールみたいなやつ
    • Elasticsearch データの可視化
    • Elastic Stack の制御
    • クエリの負荷の追跡
    • アプリ内部のリクエストフローの把握
  • 公式ドキュメント

Kibana の環境構築

1. Kibana をダウンロードする
2. 起動させる(1 分くらいかかる)

$ bin/kibana

3. http://localhost:5601/ をブラウザで開く
4. http://localhost:5601/app/dev_tools でコンソールが開かれる → ターミナルから curl してたのは全てこのコンソールから実行可能

技術Elasticsearch

Posted by hosochin