Elasticsearch 5.3に対してPythonからアクセスする際、Indexはワイルドカード指定できるのだけど、Typeについてはワイルドカードでの指定ができない。 一応、カンマ区切りで複数の指定は可能なのだけど、あまりにTypeの数が多くなるとhttpのエラーでクエリを実行できなくなってしまう。で、なんかいい方法ないのかなと調べていたのだけど、どうやらクエリ側にprefixとして_typeを定義してやることで、ワイルドカードでの指定と同じようなことができるようだ。
ElasticsearchのIndex/Typeを分割する必要があり、クエリを投げる前にIndex/Typeの一覧を取得する必要が出た。で、どうやって取得すればいいかというのだけ念の為残しておく。 残念ながらそのものズバリな関数はライブラリに無いっぽいので、Mapping情報を取得して、そこから抽出する方法になってしまう(connはElasticsearchとの接続用)。
よく、時間のかかる複数の処理をパラレルで実行し、かつ後からタスクの追加もさせたい、コマンドをキューのようなものに入れておいて処理させたいということがある。
ただ単に実行するコマンドをシェルスクリプトにしただけではこれはできないので、なにかいい感じのものはないかなーと探してみたところ、『Task Spooler
』なるツールがそのものズバリな機能を持っているようだ。
というわけで、早速試してみることにする。なお、OSはUbuntu Server 16.04 LTSを用いている。
1. インストール
Ubuntuであれば、aptでインストールができる(CentOS等の場合、ソースを取って...
個人的に、なにか定期的にコマンドを実行して結果を監視する際にはwatchコマンドを使ってモニタするのだけど、悲しい事にwatchコマンドでは変動のあったタイミングがいつで、その出力がどういったものだったかを確認することはできない。 せめて後からログのように確認することはできないかなと考えた結果、watchで実行するコマンドの出力つかって都度diffをして、差分が発生していた場合はファイルに書き出させるという方法が使えないかと思いついた。
調べた際に、そのものズバリで引っかからなかったので念の為残しておく。
以下のように、bulk処理をtryで実行し、exceptでhelpers.BulkIndexError.errors
を指定することで、エラーリストを取得できるようだ。
だいぶ前に、ターミナル上で指定列だけを除外して出力したいという事があったので、備忘で残しておく。 真っ先に思いつくのがawkでの処置なのだが、awkだと指定した列だけを削除するという、そのものズバリな機能はないので、ちょっと冗長になってしまう。
最近、ほぼ毎日何らかの形でTwitterのシェル芸botで遊んでるのだけど、そこで文字列からひし形の模様を作って遊んでたので、そのシェル芸について備忘で残しておく。 (こういう遊び、ちゃんと名前付いてるのかもしれないけど、わからないのでこの書き方で。)
1. 文字列でひし形にする
文字列を使って、以下のような模様を作る(例:焼き肉が食べたい)。 縦横ともに、真ん中の列・行はオリジナルの文が読める状態。
焼
焼肉が
焼肉が食べ
焼肉が食べたい
が食べたい
べたい
い
最初、jqコマンドだけで実現できるかと思ったのだけど、ちょっと計算の仕方があわず。 a...
Elasticsearchでは、Snapshotという機能を使うことでIndexのバックアップを取得することができるらしい。 別ディスクにオンタイムで取得できるらしく、使い勝手はよさそう。
1. Snapshot用リポジトリの作成
Snapshotを取得するにあたり、事前にElasticsearch側にSnapshot用のリポジトリを作成する必要がある(取得対象となるリポジトリとは別)。 Snapshotの保存先ディレクトリについても作成する必要があるので、まず最初にSnapshot用のディレクトリを作成する。
sudo mkdir -p /path/to/snapshot
sudo chown elasticsearch:elasticsearch /path/to/snapshot
ディレクトリを作成したら、Elasticsearchの設定ファイル(/etc/elasticsearch/elasticsearch.yml)に以下のように追記をする。
Azure上に、WindowsのVMを用いた環境を構築する必要があったので、Ansibleで構築を一気にやってしまうことにした。今回は、リソースグループから作成して、VMの作成とWinRMの有効化、各VMへの接続、設定までをまとめてみる。 Playbookのサンプルはこちらに置いてあるが、Azure上にAD環境を構築する内容になっているのでそのまま流す場合は注意。また、この情報は2018年6月時点のもので、以後変わっていく可能性が高い点についても注意してもらいたい。
1. Azure-CLIの設定
まず、AnsibleをキックするマシンでAzure-CLIを利用できるようにする必要...
ちょっとシェル芸botで遊んでいた際、ふと畳語(ワンワンとかドキドキとかムラムラ、ビンビン、ヌレヌレなど、反復する言葉)を抽出したり、置換するにはどうすればいいかなと思ったので、やってみることにした。 なお、grepやsedについては使用するのはGNU拡張されたものを用いるので、Mac OS Xに入っているgrepやsedでは同じことができないかもしれないので注意。
1.抽出する場合
GNU grepにはPerl正規表現を利用できるオプションがあるので、以下のように記述することで畳語を抽出できる。 (Perlの正規表現を使うことでunicode propertiesが利用できるよう...
Golangでファイルやディレクトリのパーミッションを取得しようとした際、オブジェクトとして取得できてしまうのでどうやったら0644,0700といった形式で取得すればいいのかな?と少し手こずったので、備忘として残しておく。 以下のように、printfで"%04o"でパーミッションを数字として出力することができるようだ。
認証が必要なTimeMachineサーバにバックアップを取ってから、Macbook(Mac OS X Sierra)のシステムリカバリをしようとしたところ、GUIに沿って操作するだけだとTimeMachineを認識できないようだ。
じゃ、どうするんだというと、Command + R + 電源ボタン
でリカバリ用のmacOSユーティリティを起動→「TimeMachineバックアップ」を選択してネットワークに接続したら、上のメニューからターミナルを開いて以下のようにコマンドを実行する。
サーバへの設定の際、当たり前の話ではあるのだがsshで接続して色々と操作をする。 この際、"このターミナルは今操作中だよ"というのが視覚的にわかりやすいよう、ターミナルの背景色等を自動的に切り替えさせたい事がある。で、なんかいい方法ないかなーと調べてみたところ、tmuxを利用すればできそうだということがわかった。
tmuxでは、以下のようにコマンドを実行することで現在アクティブになっているpaneの背景色等を変える事ができる。