「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ビッグデータの可視化のプロダクト
詳細 †
Elasticsearch †
特長 †
- スケーラブル、スキーマレス、マルチテナント
- ドキュメントに対し高度な超高速全文検索が可能
用途 †
- データ駆動型システム(未来予測・意思決定・企画立案)
ストア、ストレージ †
- 超高速全文検索に特化
- 1000万ドキュメント位まで1台で対応可能
- それ以上は、Hadoopで処理を行う。
- ES-Hadoopで、
- HadoopデータをElastic Stackにインデックスし、
- Elasticsearchエンジンで高速処理することも可能。
∴ NoSQLとしてみた場合、ドキュメント指向+分散処理系に近い。
Elastic Stack †
推奨のスタックみたいなもの
(Elasticsearch、Kibana、Logsatsh、Beats)。
Kibana †
JavaScript製の対話的な可視化ツール
Logsatsh †
汎用的なETLツール
Beats †
RDB との比較 †
設計方法 †
検討する必要がある。
Nodes, Shards, Replica †
- Shards
- Luceneの1インスタンス
- Elasticsearchに自動管理されているワーカ
- Replica
- マスターNodeを除いたクラスタ内でのコピー数
- 負荷分散や縮退運転用で使用する。
Indices †
- 1つの Index に対
- するデータ量や書き込み速度を分散できる。
- して、書き込み可能な Shards の数を変更できない。
- 親子関連のデータは別の Index にはできない
Type で分けで、
- 親子関連のデータとして Index するか、
- 1つのドキュメント内に Nested Type 型のデータとして Index するのか
のどちらか。
- 運用要件
- 複数の Index に同じ名前の Alias をつけることができる。
- 事前に新しい Index を作成し、公開したいタイミングでその情報を検索結果に反映できる。
- 多言語対応
- Index レベルで分ける。
- Type レベルで分ける。
- Document の属性に lang を用意する。
- データ・スキーマが異なるだけの場合
- Index レベルで分ける。
- Type レベルで分ける。
Types †
※ v6 以降では、Type指定が非推奨に。タイプ名の代わりに「_doc」を指定。
Documents †
JSON形式のデータ
Fields †
JSON形式のデータ中のキー
検索処理の概要 †
サーチ API †
- バリエーション
- index, typeは、[,]区切りで列挙可能。
- [*]をワイルドカードで使用可能。
- index, typeに、_allを指定可能。
- Alias
index名には Alias を使用可能。
- ページング
- size: 1度に検索結果を取得する数
- from: スキップする検索結果数
Mapping、Analysis、Query DSL †
- Mapping
フィールドの型や分析方法の設定
- Analysis
言語処理や正規化などフィールドの値の加工について
- Query DSL
JSON フォーマットによる検索条件の組み立て
Apache Lucene †
ドキュメント登録にはXML、JSONなどを使用
全文検索 †
正確かつ効率的な検索アルゴリズム
- クエリ
- 多数のクエリタイプ
- クエリ式の構文解析、誤字補完機能
- カスタムソート、フィルタリング
- スコアリング、ランキング
- 検索結果のハイライト機能
- RESTライクAPI
アナライザ †
- 文書の索引付けと検索
- 転置索引方式の採用
- 形態素解析とN-gramによる単語切出
性能 †
1時間に150GB以上のインデックススループット/ランク付け処理
ECS †
ECS : Elastic Common Schema
- Elasticsearchにデータ投入するための新しい仕様基準
- 共通フィールドセットとネーミングのガイドラインを定義
- データを一貫した方法で構造化し、カスタマイズにも対応する。
- 以下の様々なケースでECSが生産性と性能をエンハンスする。
- ユーザがデータを検索するケース
- Kibanaでデータを調査するケース
- 機械学習ジョブを構成するケース
- アラート機能を設定するケース
参考 †
Wikipedia †
Elastic †
Qiita †
Elasticsearch †
Elastic Stack †
Developers.IO †