PythonElasticsearchは全文検索エンジン。AWSやelastic社のクラウドサービスもありますが、インターネットへの接続に制約がある場合など、ローカルの環境に構築することもできます。6.xを使うケースがあり、そのときの導入手順をメモしておきます。いっても基本的には5.x系と手順はそう変わっていません。CentOSでのざっくりとした構築手順と、Pythonでの簡単な接続テストについても記載しておきます。認証付きプロキシありの環境では先に環境変数http_proxyを設定しておくと便利です。https_proxy=$proxy_url今回はrootで作業していますが、他のユーザで作業する場合には環境に合わせてsudoを使って下さい。Elasticsearchのインストールここではyumを使ってインストールしていきます。インストールのみならず、のちのちアップデートする際もyumを使えるので便利です。yum経由のインストール前提となるJavaをインストールします。8以上が必須らしいです。-versionレポジトリに追加します。下記は6.x系の例ですが、5.xに置換すれば5.xが入るはず。packagesbaseurl=https://artifacts.elastic.co/packages/6.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdあとはいつものコマンドでインストールできるはず。elasticsearch設定ファイルの編集デフォルトではローカルアドレスのみアクセスが許可されていますので、他のマシンから参照できるように設定ファイルを編集します。/etc/elasicsearch以下の設定ファイル(YAML)には設定項目がコメントアウトされているので、必要な項目のコメントを削除して有効化します。_local_]上の例ではローカルホストと、同一ネットワークのアクセスを許可しています。"0.0.0.0"にすると任意のアドレスからアクセスできるようになりますが、セキュリティ上は慎重に使ったほうがいいですね。変更を反映するにはサービスの再起動が必要なので、すでに起動している場合は注意して下さい。ファイヤウォールの設定ファイヤウォールを利用している場合はElasticsearch用にポートを許可しておきます。9300ですが、上記の設定ファイルで変更している場合はそれに合わせて指定して下さい。firewalld.serviceサービスの設定systemctlでサービスの開始・停止の操作、自動起動の設定を制御できます。elasticsearchうまく起動していれば、ブラウザやcurlなどで接続した場合に設定(JSON形式)を応答してきます。Search"}プラグインのインストール字句解析用のアナライザなど、付加的な機能はプラグインとして導入することができます。構成管理用のCLI(binディレクトリにあるスクリプト)を使ってインストールします。サービス設定から調べると、/usr/share/elasicsearchにインストールされているようなので、binディレクトリのスクリプトを指定して任意のプラグインをインストールします。下記は日本語の字句解析を行うためのkuromojiプラグインをインストールする例です。analysis-kuromoji基本はネットワークインストールなのですが、プロキシの内側でインストールする場合には内部的に動作しているJavaの環境変数(オプション)にhttp/httpsプロキシを設定する必要があります。analysis-kuromojiが、認証付きプロキシではこの方法がうまくいかなかったので、curlでダウンロードしたのちファイルからオフラインインストールする、という二段構えにしました。下記は上記と同じくkuromojiをインストールする例です。プラグインのオフラインインストール用ファイルのURLはたぶんググれば出てきますが、対象のElasticsearchと互換のバージョンを使って下さい。file:///root/es/analysis-kuromoji-6.2.3.zip構文は見たまんまなのですが、プラグイン名の代わりにダウンロードしたzipファイルの場所を指定しています。zipファイルの場所は環境に合わせて好きな場所に変更して下さい。今回はrootアカウントを使っているので、esという名前のディレクトリをホームディレクトリ以下に作成してそこに置いています。インストールが終わればzipファイル自体は削除して大丈夫です。APIをラップしたモジュールが提供されているのでこれを使います。いつもの通りpipでインストール可能です。elasticsearchバージョンはElasticsearchのメジャーバージョンと対応しており、基本的には後方互換性があります。6系を使うぶんには特にバージョンを指定しなくてもいけるはず。ちなみにElastic社は関連のソフトウェアスタックをスイート化し、バージョニングを統一した経緯があり、Elasticsearchのバージョンは2から5に飛んでいます。単純な操作はElasticsearchクラスを呼べば充分です。動作確認がてら、一般的な設定を取得してみましょう。下記のようにするとブラウザでトップ(ドキュメントルート)にアクセスした場合と同等の情報を取得することができます。Elasticsearch("{SERVER_ADDRESS}:9200")print(repr(es.info()))elasicsearch.Elasticsearch()クラスのシンプルな例では、サーバのアドレスを渡して初期化します。結果はこんな感じのオブジェクト(整形してあります)になります。実際にデータを投入してみるには下記のようにします。指定したインデックスindexやdoc_typeが存在しない場合には自動的に作成されます。ここではbodyにデータ(ドキュメント)となるJSON文字列を渡していますが、マッピング(いわゆるスキーマ)もこのデータに合わせて自動的に定義されます。マッピングをちゃんと設定するAPIもあります。body=json.dumps(sample_data))KibanaのインストールKibanaは専らElasticsearch用のGUIです。必須ではありませんが、検索や設定変更などちょっとした操作から、ダッシュボードの作成まで、だいたいのことができてしまうのでインストールしておくと楽です。今回はElasticsearchと同じサーバにセットアップします。yum経由のインストールレポジトリの設定はElasticsearchと共通。同じホストにインストールする場合はそのままyumでインストールできます。逆にElasticsearchと別のホストにインストールする場合は、Javaやレポジトリ設定など前提条件の設定を別途行う必要があります。kibana設定ファイルの編集Elasticsearchの場合と同様にアクセス元のアドレスを指定しておきます。0.0.0.0先と同じく、変更を反映するにはサービスの再起動が必要です。ファイヤウォールの設定Kibanaの場合はデフォルトが5601番ポートになっていますので必要に応じて許可しておきます。--permanentサービスの設定これもElasticsearchの場合と同様です。UIが立ち上がっているはずです。Elasticsearch側にデータが投入されている場合には、検索をかけたりすることもできます。ブラウザでサーバの5601番ポート(デフォルトの場合)にアクセスします。手始めにインデックスパターンを作成しておきます。投入しておいたインデックスを指定。filterを指定できます。サーバ側で自動的に型を解釈してくれていますね。Discoverタブから検索できます。usta関連記事PowerShellとPythonで性能情報を取得するたまに性能情報を取得したいことがありますが、スクリプトでできると便利ですよね。PowerSh...記事を読むPython3でJPEG画像のExifを取得し、回転方向を修正するちょっと古いPCや安物のデバイスでJPEGを表示させようとすると、上下が反転していたりします。Exifに記録されている回転情報を反映していな...記事を読むFlashAirで始めるワイヤレス転送FlashAir、最近はこういうのがあるんですね。無線LAN機能がついていて、リモートで操作できるSDカードです。サイズから...記事を読むInfluxDBとGrafanaで作るサーバ監視環境Grafanaはデータの視覚化ツールとして人気ですね。今回はInfluxDBをデータソースとして性能監視環境を構築した際のメモです。(関連設定の取得・設定変更)別記事の続きです。ここではポートフォワードの設定や仮想メディアの情報取得について書いておきます。完成形のサンプルは最後に掲載します。~二代目の帰朝~別記事の続きです。データの登録と検索について記載します。APIを作成するBottleはPythonの軽量Webフレームワーク。サーバサイドのPython製フレームワークではDjangoやFlaskが有名ですが...記事を読むPythonでなんちゃってディスク空き容量取得サイズの大きいファイルを書き出すスクリプトなど、実行中の環境でディスクの空き容量を取得したいときがあります。series)データベースとして人気のようです。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。