LoginSignup
1
2

More than 3 years have passed since last update.

IKS+Postman で Elasticsearch をお気楽に体験してみるメモ

Last updated at Posted at 2020-06-28

最近、Elasticsearch サービスに関する話をよく聞きます。興味もあったので、ちょっと調べ、軽く試してみました。これはそのメモです。

Elasticsearch とは

Elasticsearch は OSS の、Lucene 基盤の分散処理マルチテナント対応検索エンジン、だそうです。全文検索に特化しているとか。以下が理解の参考になりました。

個人的な第一印象は、テキスト検索が得意な Document DB、に見せかけて中身は形態素解析してるゴリゴリの分散 RDB ではないか、という感じです。外してそうな気もしますがw

さて、実際に試してみましょう!

IBM Cloud で無料 k8s クラスターを使う

Elasticsearch は各社で様々なサービスを提供していますし、それらを利用した マネージドサービス もあるようです。でも今回はお試しなので、手元にある k8s 環境で実行してみましょう。

個人的には IBM Cloud が提供する IKS (IBM Cloud Kubernetes Service) の 30日間 無料クラスター を愛用しています。クレジットカードを登録して 従量課金, PAYG アカウント にしないと使えないのですが、他に有料サービスを使わないならば請求はありません。30日後に自動削除されるので、消し忘れても安心。
image.png
IBM さん太っ腹で、この30日間 無料って何度でも使えるのです(注: 2020年6月現在)。なので使い終わったら削除して、次回また新規作成すればok。つまり使い捨てで、お掃除する必要もない、お試しには最適な環境なのです。ただしクラスターの新規作成には 30~60分ほどかかるので、そこだけ注意が必要。

更にクラスターには「Web端末」機能があります。
image.png
ibmcloud や kubectl など必要な CLI ツールが導入されたシェル環境を、Webブラウザから利用できます。自分のマシンへのインストール不要で試せるのが嬉しいところ。
image.png

Elasticsearch 環境のセットアップ

さて、k8s 環境が使えるようになったところで、k8s 上に ElasticSearch7.1 クラスタを構築してみた ページを参考に docker ベースで Deployment しましょう。

kubectl run elasticsearch \
  --image=docker.elastic.co/elasticsearch/elasticsearch:7.1.1 \
  --env="discovery.type=single-node" --port=9200

Deployment、ReplicaSet、Pod が作成されているのを確認します。
image.png

このままでもローカルに試せるのですが、せっかくですから NodePort Service を作成して、インターネット経由でアクセス可能にしましょう。

kubectl expose deployment elasticsearch --type="NodePort" --port=9200
kubectl get all
ibmcloud ks worker ls --cluster mycluster

表示された情報から、Public IP と外部に公開されたポート番号を入手します。最後の Public IP の確認方法は k8s 環境によって違う(今回は IBM Cloud の例)ので、適時確認してください。
image.png
ローカルPCの curl コマンドでインターネット経由のアクセスができることを確認しておきましょう。
image.png

Postman で試す

curl だといろいろ面倒なので、ここからは Postman で API を叩きたいとおもいます。まずは先ほどと同じ URL で、ヘルスチェックを実施。
image.png
_search で現在の中身が空であることを確認しておきます。
image.png

ドキュメントを作成する

さて、 はじめての Elasticsearch にある手順を試していきましょう。まずは _id を指定したドキュメントの作成です。

PUT メソッドに変更し、/library/_doc/1 を URL で指定します。ドキュメントの JSON データを送信するため、Body 欄で形式を raw を、種別として JSON を選択して、下のテキスト欄に JSON 形式データをコピペします。
image.png
送信し、返ってきた結果の result 欄が "created" になっていればドキュメントが作成されています。
image.png
もう一度 _search を実行して、作成されたドキュメントを得られることを確認しておきましょう。
image.png

ドキュメントを部分的に更新

後は手順を参考に、いろいろ試していきましょう。例えばドキュメントを部分的に更新して、
image.png
更新されたドキュメントを確認してみたり。
image.png

ドキュメント検索の準備

これも手順にあるものです。まず既存のドキュメントを削除します。
image.png
/library/_bulk リクエストでドキュメントを一気に作成し、結果でエラーが無いことを確認します。
image.png

ドキュメント検索

後はいろんなパラメータを指定して検索機能を試せます。例えばタイトルに "fox" が含まれるドキュメントは4つ結果が返ってきます。
image.png
手順にある AND 検索を試してみた結果がこちら。
image.png

お掃除

k8s は試した後のお掃除も楽でいいですね。以下で作成したリソースを削除します。

kubectl delete service elasticsearch
kubectl delete deploy elasticsearch

まあ、IKS 無料クラスターの場合は、単にクラスター削除すれば良いだけなのですがw

というわけで

Elasticsearch を簡単にですが、実際に試してみました!

各種の解説文やドキュメントを読みつつ、サンプルを自分で試してみるのが理解の早道だとおもいます。単に読んでいるだけだと、無意識に読み飛ばしちゃったり、寝ちゃってどこまで読んだか忘れてしますので(僕だけかも…)。

参考にさせていただいた資料が素晴らしいので、このメモ自体の情報量は薄めなのですが。誰か一人でも「簡単そうなので、やってみよう!」と思っていただければ、メモ公開した甲斐があるってもんです。

それではまた!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2