[Elasticsearch入門] Elasticsearch基本データ操作

こんにちは、エンジニアの鵜川です。

入社して早くも3ヶ月が立ちました。業務の中で吸収できることが多く毎日成長を実感しています!

今回は業務内でElasticsearchを使用して開発する機会があったので、その中で理解に苦しんだデータのクエリ操作についてまとめました。

Elasticsearchとは

そもそも、ElasticsearchとはApache Lucene を基盤として構築された分散検索/分析エンジンです。分散型であるため、大量のデータを並行して処理し、クエリに最適なものをすばやく見つけることができます。大量のデータを検索、取得する際に大変役に立ちます。

Elasticsearchへのデータ登録

Elasticsearchは、クエリの実行に使用できるJSON形式のドメイン固有言語を提供しています。まずデータの登録、検索を実施するにはElasticsearch側へのインデックスの登録が必要です。今回はdockerの中に[ElasticsearchKibana]の環境を作成し、比較的検証のしやすいDev Toolsを使用していきます。

環境の構築については割愛させていただきます。参考としてQiitaの記事の方を転載しておきます。dockerでの環境構築方法

クエリの実行

それでは早速インデックスの登録を行なっていきましょう。インデックスはデータベースでいうテーブルと考えて大丈夫でしょう。以下のコマンドを実行すると現在登録されているインデックスが確認できます。

#index表示
GET /_cat/indices?v

上記の様な結果がレスポンスとして返ってくると思います。indexの欄に表示されているのが現在登録されているインデックスです。今回は[climber]というインデックスを登録してみようと思います。

#index登録
PUT /climber?pretty  

実際にGET /_cat/indices?vで登録されたインデックスを確認してみると[climber]というインデックスが登録されていることがわかります。それでは追加したインデックスに対してデータの登録と確認を行なって行きます。

#データ登録
POST /climber/external/1/_update?pretty 
{
"doc": { "name": "鵜川", "age": 23 }
}
#データ確認
GET /climber/_search
{
  "query": { "match_all": {} }
}

“hits”の中に先ほど登録したデータがしっかり登録されていることがわかります。次に登録したデータの更新を行なっていきます。更新には以下のコマンドを実施します。

#データ更新
POST /climber/external/1/_update?pretty
{
  "doc": { "age": 60 }
}
#データ確認
GET /climber/_search
{
  "query": { "match_all": {} }
}

“hits”の中を確認すると”age”の値が60に更新されていることがわかります。最後に先ほど登録した[climber]のインデックスを削除していきます。削除には以下のコマンドを実施します。

#index削除
DELETE /climber?pretty

GET /_cat/indices?vで登録されたインデックスを確認してみると[climber]のインデックスが削除されていることが確認できます。上記のクエリ操作からElasticsearchのクエリは

<REST>/<Index>/<Type>/<ID>で構成されていることがわかります。

今回は入門編としてElasticsearchへのインデックス追加、データの基本操作についてまとめました。次回はデータの検索、プログラム側からの実行方法についてまとめたいと思います!

スクラッチ開発が可能なPHPエンジニアを募集しています/

Related article

おすすめ関連記事