前置き
この記事は、PowershellでREST APIを扱うためのコマンドレット Invoke-RestMethod を扱う記事と見せかけて、実は少し違います。もともと、WindowsでElasticsearchを動かそうということでWebを探したところ、以下の記事がヒットしました。
https://qiita.com/math1101/items/311277789868ebd07835
これはこれでありがたかったのですが、Windows屋さんとしては、やはりcurlをダウンロードしてきて使うという時点で、「OS標準であるPowershellで同じことができるんですよ!」って思ってしまったので、そのフォロー記事ということでForkさせてみました。
Elasticsearchは簡単に導入できて、かつREST APIが利用できます。
ですので、いきなり本番サービスへ Invoke-RestMethod して使い方を覚えるより、Elasticsearchにあれこれ試してみて、使い方を把握すると便利ですよという趣旨のもと、本記事を公開いたします。
Elasticsearchとは
Elasticsearch公式:https://www.elastic.co/jp/ElasticsearchはJsonで扱える全文検索エンジンです。
KibanaはそれをWebから確認するためのツールです。
本記事では詳細は扱わないので、触ってみて興味を持ったのであれば色々と調べてください。
Logstashと連携させて管理サーバーのログを取り込んで解析するとかメジャーな使い方のようです。
Elasticsearchの導入
以下、Windows 10にElasticsearchを導入して動かすところまでPowershellで書いてます。PS1ファイルで保存してもいいですが、1回しか実施しないのでPowershellのプロンプトに直接コピペで張り付ければそれだけでOKです。
# ■前提:Java導入済み環境
Get-Item "Env:JAVA_HOME"
java.exe -version
# Elasticsearchに対応した Java が入っていなければ公式からダウンロード&セットアップ
# https://java.com/ja/download/
# ■作業ディレクトリー作成
$WorkDir = "C:\Elastic"
if ( -not (Test-Path -Path $WorkDir) ) { # フォルダチェック
New-Item -path $WorkDir -ItemType "directory"
}
# ■作業ディレクトリーへ移動
Set-Location $WorkDir
# ■Elasticsearch
# ○製品ダウンロード:https://www.elastic.co/jp/
$URL = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.zip"
$FileName = Split-Path $URL -Leaf
$FileFullPath = Join-Path $WorkDir $FileName
Invoke-WebRequest -Uri $URL -Outfile $FileFullPath
# ○ZIP展開:Powershell 5.0以下なら素直にGUIから展開してね。
$FolderName = $FileName -replace "\.zip$", ""
Expand-Archive -Path $FileFullPath -DestinationPath $WorkDir -Force
Start "${FolderName}\bin"
# ■ツール:Kibina
# ○製品ダウンロード:https://www.elastic.co/jp/
$URL = "https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-windows-x86_64.zip"
$FileName = Split-Path $URL -Leaf
$FileFullPath = Join-Path $WorkDir $FileName
Invoke-WebRequest -Uri $URL -Outfile $FileFullPath
# ○ZIP展開:Powershell 5.0以下なら素直にGUIから展開してね。
$FolderName = $FileName -replace "\.zip$", ""
Expand-Archive -Path $FileFullPath -DestinationPath $WorkDir -Force
Start "${FolderName}\bin"
以上で「C:\Elastic」に「elasticsearch-6.3.2」と「kibana-6.3.2-windows-x86_64」が生成されます。該当バージョンは本日時点の最新版なので採用しただけです。新しいバージョンが出ていればそちらを採用いただいて構いません。
Elasticsearchの起動
binフォルダーの中にある、製品名と同名のバッチファイルを起動すればそれだけで動きます。設定等は一切なくていいので、動かなかったら多分Javaのせいじゃないですかね。64bit版入れてJAVA_HOME通してあれば普通は動きます。
※localhost宛なのでWindows Firewallは影響ないですが、アンチウィルスソフトがポートブロックするようであれば解除も忘れずに
以下の内容を「C:\Elastic\StartES.bat」」として保存しておけば、ワンクリックでElasticsearchとKibanaを両方起動できます。
なお、「bin\elasticsearch-service.bat」を使うとサービス登録もできるようなので、サーバー利用の場合には検討してください。
Set ScriptPath=%~dp0
Set ES_PATH=%ScriptPath%elasticsearch-6.3.2
Set KB_PATH=%ScriptPath%kibana-6.3.2-windows-x86_64
CD /D "%ES_PATH%\bin"
Start "Elasticsearch" /min ".\elasticsearch.bat"
REM Elasticsearch 起動までの待機:環境依存なので適当に
Timeout /T 60
CD /D "%KB_PATH%\bin"
Start "Kibana" /min ".\kibana.bat"
Echo 起動が完了しました。
REM pause
Elasticsearchの動作確認
簡単に動作確認しましょう。先ほどと同様、プロンプトへ以下を直接貼り付けます。# ■動作確認
# ○バージョン確認
$Hostname = "localhost"
$PortNumber = 9200
$BaseURL = "http://${Hostname}:${PortNumber}"
$RequestURL="${BaseURL}/"
$JsonData = Invoke-RestMethod -Uri $RequestURL
ConvertTo-JSON $JsonData
# ○プラグイン確認
$RequestURL="${BaseURL}/_nodes/plugins"
$JsonData = Invoke-RestMethod -Uri $RequestURL
ConvertTo-JSON $JsonData -Depth 10
Json形式でバージョン情報、プラグイン情報が表示されればOKです。ちゃんと内容を確認しなくても支障はないので、エラーにさえならなければ、なんか出たぞくらいに思ってください。
以上にて、GETメソッドによるInvoke-RestMethodの動作が確認できました。
結構長くなったので、先に挙げた記事の内容については次の記事にて記載します。
0 件のコメント:
コメントを投稿