Elasticsearch
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-Elasticsearchを独立させた。Solrと同じくLuceneベース
#ls2(Elasticsearch)
#contents
*Docker local環境 [#d0f1bad1]
docker run -d --name elasticsearch -p 9200:9200 -p 9300:...
*REST API [#v3939558]
?pretty=trueをつけないと超見辛い!
|curl -X GET "localhost:9200/_cat/health"|クラスターの状態|
|curl -X GET "localhost:9200/_cat/indices?v"|インデックス...
|curl -XGET 'localhost:9200/[インデックス名]?pretty=true'...
|curl -X GET "localhost:9200/_aliases"|エイリアス一覧|
|curl -I "localhost:9200/index名"|indexの存在確認。200な...
|curl "localhost:9200/index名/_settings"|設定一覧|
|curl "localhost:9200/index名/_search"|検索条件なしで表示|
|curl "localhost:9200/index名/_count"|件数|
|curl -X PUT -H "Content-Type: application/json" 'localh...
*elastic dump [#z715721d]
**ファイルへ [#da23f682]
elasticdump --input=http://localhost:9200/test --output=...
*気になりワード [#sa424e34]
-elasticdump
*JavaClient [#y1348d89]
**HighLevelRestClient [#t06782e6]
-transport client廃止後のデファクトスタンダード
-JsonをうまくラップしてObjectで扱えるようにしてくれる
https://medium.com/@sourav.pati09/how-to-use-java-high-le...
**RestClient [#rdea2bbe]
-ほぼcurlと同じクエリーを自分で組み立て、JSONも自分でpars...
*構成 [#k746709d]
|INDEX|RDBのDatabaseに相当。この単位でSHADE数を決めること...
|シャード|インデックスを何分割するか?作成時のみしか指定...
|TYPE|INDEXに格納されるドキュメントの型。テーブルみたいな...
|DOCUMENT|RDBの1レコード|
|FIELD|列定義|
|CLUSTER|NODEの集合|
|NODE|ESの1プロセス。最小構成単位である|
シャードの数はノードの数に合わせておくと良いらしい。ノー...
-更新は苦手なのでINDEX単位で日付を付与して、古くなったも...
|RDB|Elasticsearch|
|Databases|Indices|
|Tables|Types|
|Rows|Documents|
|Fields|Columns|
*ノードの種類 [#x8972509]
-マスターノード(Master-eligible node)
node_master: trueになっているものがマスターノードになれる...
-データノード(node_data: true)
CRUDに関する動作を請け負うノード
-クライアントノード(masterでもなくdataでもない)
データも保持せず、マスターにも昇格しない。検索時の負荷分...
シャードはノード数と同じにしておくと良いのだが、将来的に...
*シャードの数 [#l0d1c113]
https://qbox.io/blog/optimizing-elasticsearch-how-many-sh...
*INDEX設計 [#g369415b]
一つのINDEXでシャードの数が決まるので、スケールさせる前提...
*AWS Elasticserach Service [#i8eac1c7]
-基本的なプラグインはインストール済みだが、カスタムプラグ...
-バージョンが古い(2.1が出ている時期に1.5.2)
-S3 Pluginを利用すればES on EC2 to ElasticSearchServiceの...
-2016/08ようやく2.3がでた!
**ElasticSearchServiceへCloudWatchから流す [#u2e0255e]
VPCFlowLogやCloudTrailをElasticSearchServiceに流している...
*Elastic Cloud(旧Found) [#xadb022d]
-バージョン選択可能
-基本プラグイン導入済み
-リージョンも選択可能
-高い!
*参考ページ [#z359591d]
dstat投入
http://qiita.com/yumatz/items/debbc6d6063c85531fd1
*運用 [#r3ccb3b1]
**本番環境向け推奨マシンスペック [#m8867028]
実験用途で2GBのマシンに入れたが、結構な割合でOomKillerを...
-メモリは64gbが理想だが、32−16GBでも大丈夫。8GB以下はイン...
-CPUのスペックはマルチコアであれば特にハイスペックは要求...
-ディスクはSSDベースにしておけばベター。NASはダメ!
-ネットワークはデータセンター内部にとどめておき、仮に早い...
-HEAPは初期設定では実運用には適さない。マシンの実メモリの...
**設定 [#d6110a6b]
|JVM|1GB以上推奨。最小と最大を同じにしておく。/etc/elasti...
|File Descriptors|65535|
|mmap|rpmであれば変更済みとなる|
|swap|disable swap(swapoff -a)|
**投入までの流れ [#f9fd33ac]
+INDEX作成(curl -XPUT "${ES_URL}/${INDEX_NAME}")
+検索で使う型を定義するmappingをJSONで指定(curl -XPUT "${...
**Mappingの定義 [#m674eb8a]
スキーマレスとはいえ、集計や検索などを考えると事前にMappi...
単なる型以外にも、入れ子になっているもの(Nested Type)やRD...
|mapping定義の参照|curl -XGET http://localhost:9200/INDEX...
**クラスターの可視化 [#u022dd5d]
-elasticsearch-head
インストール後以下のURLで参照可能。
http://133.18.30.106:9200/_plugin/head/
*プラグインインストール [#l778eff3]
-インストール済みプラグイン確認
curl -XGET 'http://localhost:9200/_nodes?plugin=true&pre...
yumの場合はコマンドは以下の場所にある
/usr/share/elasticsearch/bin
plugin install プラグイン名
# kuromojiインストール
/usr/share/elasticsearch/bin/plugin install analysis-kur...
# watcherのためのライセンスプラグイン
/usr/share/elasticsearch/bin/plugin install elasticsearc...
# watcher
/usr/share/elasticsearch/bin/plugin install elasticsearc...
# bigdisk
/usr/share/elasticsearch/bin/plugin install lukas-vlcek/...
**有償プラグイン [#qe169624]
-サブスクリプション加入が必要である。30日間無料でトライア...
|Sheild|認証||
|Watcher|通知|有料なのに設定画面がないのが痛い|
|Beats|||
|Kuromoji|||
|Ec2 Discovery|||
|Kibana|||
|Sense|||
|PacketBeat|||
|TopBeat|||
***Graph Deep Dive [#d8feb317]
Sinificant Term Aggrigation
https://www.elastic.co/guide/en/elasticsearch/reference/c...
Graphの利点
関連性を見て分析
。
404のエラーからさらにドリルダウンして、各ブラウザを表示さ...
トライアルは30日
データが入っていればすぐ利用可能。
*アラート [#d37153b6]
無料ならelastalert(Yelp開発)。有料ならWatcher(サブスクリ...
https://github.com/Yelp/elastalert
*情報 [#s19a4767]
パフォーマンスチューニングの注意点
http://qiita.com/rjkuro/items/e79eec7ffb0511b7c678
**td-agentとの連携 [#t82cc0fa]
-fluent-plugin-elasticsearchのインストール。1.0系だとflue...
/opt/td-agent/embedded/bin/fluent-gem install fluent-plu...
*Elasticsearch 2.2 [#ta64c66a]
デフォルトはローカルからのみ接続可能なので、以下の変更を...
-/etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
*Kibana4.4 [#p135a5c4]
解凍して、host変えて、起動して5601ポートでアクセス。
*Beats [#xc90fcfb]
エージェント型だが、マシンの情報を定期的に送ってくれる上...
*トラブルシューティング [#f554ab0e]
**cluster_block_exception [#z13c546a]
ディスク容量が95%超えると書き込み抑制する。管理コマンドで...
curl -XPUT -H "Content-Type: application/json" http://lo...
**fluentd + ElasticSearchServiceで時折「Cannot get new co...
-以下のパラメータを入れることにより再接続をするようになる。
reload_connections false
*利用事例 [#xaaa6362]
+MySQL Slow Query Log
+Apache Log
*運用履歴 [#j608360a]
**Kagoya 2G [#sfc328b3]
限界ぎりぎりまでメモリを使う。何もしてなくても自然に落ち...
Apr 27 02:19:53 v9215 elasticsearch: # There is insuffici...
Apr 28 09:11:22 v9215 elasticsearch: # There is insuffici...
Apr 28 13:01:44 v9215 elasticsearch: # There is insuffici...
**Azure A2 [#d115f779]
3.5Gあるので通常のサーバー用途と共存させてもなんとか耐え...
5/12 3:55AMを境にpacket&top beatsが勝手に停止していた。
5/24 4:05AMを境にElasticSearchが落ちていた。その近辺でoom...
そしてkibana has broken completely!
plugin:elasticsearch Elasticsearch is still initializing...
全部のインデックスを消去して、わけわからんけど復旧。
*Kibana [#o03e36a7]
視覚化ツールの標準。認証機能が単体ではまだ実装されておら...
**プラグイン [#u9a23223]
kibana単体にもプラグインインストール可能。RPMインストール...
/opt/kibana/bin/kibana plugin -i kibana/timelion
**検索 [#icd56f32]
|条件検索|フィールド名: 検索したい値|
|typeで絞る|_type: process|beatsの場合|
**Visualize [#u4f7e1de]
単一の値の平均値を出す。metrics
***時系列での特定の値の変化を出す。 [#rd2ce11c]
+Line Chartを選択
+X-axisにDate Histgramを選択して、@Timestampを選択
+Y-axisに任意のフィールドを出す。countはフィールド選べな...
*timelionプラグイン [#u22ec19f]
kibanaとは別アプローチで流れるSQLのように関数でグラフを作...
*ElastAlert [#j8a43fab]
無料のアラート検知&通知ツール。コマンドラインで実行する。
**インストール [#a2455ba3]
*大量投入 [#j568b08f]
http://ameblo.jp/fcv-system/entry-11950051736.html
*API [#kdf2f1f8]
https://medium.com/hello-elasticsearch/elasticsearch-api-...
*Kibana クエリー [#x48b333e]
_type: road_times AND road_id: 1
_type: marcket_records AND marcket_id: 1
#counter
終了行:
-Elasticsearchを独立させた。Solrと同じくLuceneベース
#ls2(Elasticsearch)
#contents
*Docker local環境 [#d0f1bad1]
docker run -d --name elasticsearch -p 9200:9200 -p 9300:...
*REST API [#v3939558]
?pretty=trueをつけないと超見辛い!
|curl -X GET "localhost:9200/_cat/health"|クラスターの状態|
|curl -X GET "localhost:9200/_cat/indices?v"|インデックス...
|curl -XGET 'localhost:9200/[インデックス名]?pretty=true'...
|curl -X GET "localhost:9200/_aliases"|エイリアス一覧|
|curl -I "localhost:9200/index名"|indexの存在確認。200な...
|curl "localhost:9200/index名/_settings"|設定一覧|
|curl "localhost:9200/index名/_search"|検索条件なしで表示|
|curl "localhost:9200/index名/_count"|件数|
|curl -X PUT -H "Content-Type: application/json" 'localh...
*elastic dump [#z715721d]
**ファイルへ [#da23f682]
elasticdump --input=http://localhost:9200/test --output=...
*気になりワード [#sa424e34]
-elasticdump
*JavaClient [#y1348d89]
**HighLevelRestClient [#t06782e6]
-transport client廃止後のデファクトスタンダード
-JsonをうまくラップしてObjectで扱えるようにしてくれる
https://medium.com/@sourav.pati09/how-to-use-java-high-le...
**RestClient [#rdea2bbe]
-ほぼcurlと同じクエリーを自分で組み立て、JSONも自分でpars...
*構成 [#k746709d]
|INDEX|RDBのDatabaseに相当。この単位でSHADE数を決めること...
|シャード|インデックスを何分割するか?作成時のみしか指定...
|TYPE|INDEXに格納されるドキュメントの型。テーブルみたいな...
|DOCUMENT|RDBの1レコード|
|FIELD|列定義|
|CLUSTER|NODEの集合|
|NODE|ESの1プロセス。最小構成単位である|
シャードの数はノードの数に合わせておくと良いらしい。ノー...
-更新は苦手なのでINDEX単位で日付を付与して、古くなったも...
|RDB|Elasticsearch|
|Databases|Indices|
|Tables|Types|
|Rows|Documents|
|Fields|Columns|
*ノードの種類 [#x8972509]
-マスターノード(Master-eligible node)
node_master: trueになっているものがマスターノードになれる...
-データノード(node_data: true)
CRUDに関する動作を請け負うノード
-クライアントノード(masterでもなくdataでもない)
データも保持せず、マスターにも昇格しない。検索時の負荷分...
シャードはノード数と同じにしておくと良いのだが、将来的に...
*シャードの数 [#l0d1c113]
https://qbox.io/blog/optimizing-elasticsearch-how-many-sh...
*INDEX設計 [#g369415b]
一つのINDEXでシャードの数が決まるので、スケールさせる前提...
*AWS Elasticserach Service [#i8eac1c7]
-基本的なプラグインはインストール済みだが、カスタムプラグ...
-バージョンが古い(2.1が出ている時期に1.5.2)
-S3 Pluginを利用すればES on EC2 to ElasticSearchServiceの...
-2016/08ようやく2.3がでた!
**ElasticSearchServiceへCloudWatchから流す [#u2e0255e]
VPCFlowLogやCloudTrailをElasticSearchServiceに流している...
*Elastic Cloud(旧Found) [#xadb022d]
-バージョン選択可能
-基本プラグイン導入済み
-リージョンも選択可能
-高い!
*参考ページ [#z359591d]
dstat投入
http://qiita.com/yumatz/items/debbc6d6063c85531fd1
*運用 [#r3ccb3b1]
**本番環境向け推奨マシンスペック [#m8867028]
実験用途で2GBのマシンに入れたが、結構な割合でOomKillerを...
-メモリは64gbが理想だが、32−16GBでも大丈夫。8GB以下はイン...
-CPUのスペックはマルチコアであれば特にハイスペックは要求...
-ディスクはSSDベースにしておけばベター。NASはダメ!
-ネットワークはデータセンター内部にとどめておき、仮に早い...
-HEAPは初期設定では実運用には適さない。マシンの実メモリの...
**設定 [#d6110a6b]
|JVM|1GB以上推奨。最小と最大を同じにしておく。/etc/elasti...
|File Descriptors|65535|
|mmap|rpmであれば変更済みとなる|
|swap|disable swap(swapoff -a)|
**投入までの流れ [#f9fd33ac]
+INDEX作成(curl -XPUT "${ES_URL}/${INDEX_NAME}")
+検索で使う型を定義するmappingをJSONで指定(curl -XPUT "${...
**Mappingの定義 [#m674eb8a]
スキーマレスとはいえ、集計や検索などを考えると事前にMappi...
単なる型以外にも、入れ子になっているもの(Nested Type)やRD...
|mapping定義の参照|curl -XGET http://localhost:9200/INDEX...
**クラスターの可視化 [#u022dd5d]
-elasticsearch-head
インストール後以下のURLで参照可能。
http://133.18.30.106:9200/_plugin/head/
*プラグインインストール [#l778eff3]
-インストール済みプラグイン確認
curl -XGET 'http://localhost:9200/_nodes?plugin=true&pre...
yumの場合はコマンドは以下の場所にある
/usr/share/elasticsearch/bin
plugin install プラグイン名
# kuromojiインストール
/usr/share/elasticsearch/bin/plugin install analysis-kur...
# watcherのためのライセンスプラグイン
/usr/share/elasticsearch/bin/plugin install elasticsearc...
# watcher
/usr/share/elasticsearch/bin/plugin install elasticsearc...
# bigdisk
/usr/share/elasticsearch/bin/plugin install lukas-vlcek/...
**有償プラグイン [#qe169624]
-サブスクリプション加入が必要である。30日間無料でトライア...
|Sheild|認証||
|Watcher|通知|有料なのに設定画面がないのが痛い|
|Beats|||
|Kuromoji|||
|Ec2 Discovery|||
|Kibana|||
|Sense|||
|PacketBeat|||
|TopBeat|||
***Graph Deep Dive [#d8feb317]
Sinificant Term Aggrigation
https://www.elastic.co/guide/en/elasticsearch/reference/c...
Graphの利点
関連性を見て分析
。
404のエラーからさらにドリルダウンして、各ブラウザを表示さ...
トライアルは30日
データが入っていればすぐ利用可能。
*アラート [#d37153b6]
無料ならelastalert(Yelp開発)。有料ならWatcher(サブスクリ...
https://github.com/Yelp/elastalert
*情報 [#s19a4767]
パフォーマンスチューニングの注意点
http://qiita.com/rjkuro/items/e79eec7ffb0511b7c678
**td-agentとの連携 [#t82cc0fa]
-fluent-plugin-elasticsearchのインストール。1.0系だとflue...
/opt/td-agent/embedded/bin/fluent-gem install fluent-plu...
*Elasticsearch 2.2 [#ta64c66a]
デフォルトはローカルからのみ接続可能なので、以下の変更を...
-/etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
*Kibana4.4 [#p135a5c4]
解凍して、host変えて、起動して5601ポートでアクセス。
*Beats [#xc90fcfb]
エージェント型だが、マシンの情報を定期的に送ってくれる上...
*トラブルシューティング [#f554ab0e]
**cluster_block_exception [#z13c546a]
ディスク容量が95%超えると書き込み抑制する。管理コマンドで...
curl -XPUT -H "Content-Type: application/json" http://lo...
**fluentd + ElasticSearchServiceで時折「Cannot get new co...
-以下のパラメータを入れることにより再接続をするようになる。
reload_connections false
*利用事例 [#xaaa6362]
+MySQL Slow Query Log
+Apache Log
*運用履歴 [#j608360a]
**Kagoya 2G [#sfc328b3]
限界ぎりぎりまでメモリを使う。何もしてなくても自然に落ち...
Apr 27 02:19:53 v9215 elasticsearch: # There is insuffici...
Apr 28 09:11:22 v9215 elasticsearch: # There is insuffici...
Apr 28 13:01:44 v9215 elasticsearch: # There is insuffici...
**Azure A2 [#d115f779]
3.5Gあるので通常のサーバー用途と共存させてもなんとか耐え...
5/12 3:55AMを境にpacket&top beatsが勝手に停止していた。
5/24 4:05AMを境にElasticSearchが落ちていた。その近辺でoom...
そしてkibana has broken completely!
plugin:elasticsearch Elasticsearch is still initializing...
全部のインデックスを消去して、わけわからんけど復旧。
*Kibana [#o03e36a7]
視覚化ツールの標準。認証機能が単体ではまだ実装されておら...
**プラグイン [#u9a23223]
kibana単体にもプラグインインストール可能。RPMインストール...
/opt/kibana/bin/kibana plugin -i kibana/timelion
**検索 [#icd56f32]
|条件検索|フィールド名: 検索したい値|
|typeで絞る|_type: process|beatsの場合|
**Visualize [#u4f7e1de]
単一の値の平均値を出す。metrics
***時系列での特定の値の変化を出す。 [#rd2ce11c]
+Line Chartを選択
+X-axisにDate Histgramを選択して、@Timestampを選択
+Y-axisに任意のフィールドを出す。countはフィールド選べな...
*timelionプラグイン [#u22ec19f]
kibanaとは別アプローチで流れるSQLのように関数でグラフを作...
*ElastAlert [#j8a43fab]
無料のアラート検知&通知ツール。コマンドラインで実行する。
**インストール [#a2455ba3]
*大量投入 [#j568b08f]
http://ameblo.jp/fcv-system/entry-11950051736.html
*API [#kdf2f1f8]
https://medium.com/hello-elasticsearch/elasticsearch-api-...
*Kibana クエリー [#x48b333e]
_type: road_times AND road_id: 1
_type: marcket_records AND marcket_id: 1
#counter
ページ名: