Elasticsearch
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-戻る
--[[NoSQL]] > [[ドキュメント指向型>NoSQL - ドキュメント指...
--[[分散処理]]
*目次 [#z15c23bb]
#contents
*概要 [#kb1b2908]
ビッグデータの可視化のプロダクト
*詳細 [#x66435b3]
**Elasticsearch [#xeeae7a8]
***特長 [#qcdfb1f2]
-スケーラブル、スキーマレス、マルチテナント
-ドキュメントに対し高度な超高速全文検索が可能
***用途 [#wb866e22]
データ駆動型システム
-未来予測
-意思決定
-企画立案
***ストア、ストレージ [#i438cfb0]
-エンジン
--[[Apache Lucene(全文検索)>#g5b90cbe]]
--ドキュメントを保存・検索
--超高速全文検索に特化
---1000万ドキュメント位まで1台で対応可能
---それ以上は、[[Hadoop]]で処理を行う。
-Elasticsearchは、
--単体で分散処理も可能。
--ES-Hadoopで、
---HadoopデータをElastic Stackにインデックスし、
---Elasticsearchエンジンで高速処理することも可能。
>∴ [[NoSQLとしてみた場合、ドキュメント指向+分散処理系に...
**Elastic Stack [#r521f91b]
推奨のスタックみたいなもの~
([[Elasticsearch>#xeeae7a8]]、[[Kibana>#xdb2a250]]、[[Lo...
***Kibana [#xdb2a250]
JavaScript製の対話的な可視化ツール
***Logsatsh [#h0b258a7]
汎用的な[[ETL>EAI/ETL#eed58b6f]]ツール
***Beats [#h15c1264]
-[[Elastic Stack>#r521f91b]]専用感
-Goで開発された~
軽量データ収集ツール
-[[ECS>#r62e8607]]準拠
--自動構文解析機能付き
--自動データマッピング([[Elasticsearch>#xeeae7a8]])
--自動Dashboard生成([[Kibana>#xdb2a250]])
**RDB との比較 [#a377a192]
|RDB|Elasticsearch|h
|Databases|[[Indices>#u24be7b1]]|
|Tables|[[Types>#j4b96bde]]|
|Rows|[[Documents>#jc568f72]]|
|Columns|[[Fields>#xbc2e352]]|
***設計方法 [#q92b50e4]
-[[Nodes, Shards, Replica>#f34c97b1]]
-[[Indices>#u24be7b1]]レベルで分けるのか、[[Types>#j4b96b...
検討する必要がある。
***Nodes, Shards, Replica [#f34c97b1]
-Nodes
--クラスタを構成する
--下記のShardsが分散して配置される。
--Nodeの種類
---Master node (Master eligible node)~
・クラスタ情報を管理(Nodeの参加・離脱の管理、メタデータ...
・クラスタに1つのみ、 Master eligible node から動的に選出~
---Data node~
・document がindex されているshards を保持~
・CRUD、検索、aggregation のようなデータ操作を実行~
・デフォルトではすべての node が、Data node
---Ingest node~
・インデックス前にドキュメントに前処理 パイプライン定義 ...
・デフォルトではすべての node が、Ingest node
---Coordinating node (Coordinating only node)~
・リクエストのルーティング、検索・集計処理の取り纏め~
・Coordinating node と Kibana node の同居を推奨~
・すべての node が、Coordinating node(無効にできない)
---Machine learning node~
・有償オプション~
・機械学習
---Transform node~
・有償オプション~
・インデックスを変換するノード
---Remote_Cluster_Client~
・他のクラスタへの単方向接続~
・デフォルトでは有効のため、外部接続を制限する場合は無効...
-Shards~
クラスタ内で分散配置できるようにインデックスを分割した単位
--Indexが論理的な概念とすると、Shard は物理的な概念
--≒ [[Lucene>#g5b90cbe]]の1インスタンス
--Node を増やせば Shard が自動で再配置(スケールアウト)...
-Primary Shard
--書き込み可能
--数は Index 作成時に固定
--Replica Shard と同じ Node には配置されない。
-Replica Shard
--読み取り専用
--数はいつでも変更できる。
--Primary Shard と同じ Node には配置されない。
-参考
--Elasticsearchクラスタで必要なシャード数、ノード数を計算...
https://kazuhira-r.hatenablog.com/entry/2020/01/02/182732
***Indices [#u24be7b1]
-データ量や更新頻度に対する考慮
--複数の [[Shards>#f34c97b1]] から構成される。
--[[Shards>#f34c97b1]] を [[Nodes>#f34c97b1]] に分散する。
--1つの Index に対
---するデータ量や書き込み速度を分散できる。
---して、書き込み可能な [[Shards>#f34c97b1]] の数を変更で...
--親子関連のデータは別の Index にはできない
[[Type>#j4b96bde]] で分けで、
---親子関連のデータとして Index するか、
---1つのドキュメント内に Nested [[Type>#j4b96bde]] 型の...
>のどちらか。
-運用要件
--複数の Index に同じ名前の Alias をつけることができる。
--事前に新しい Index を作成し、公開したいタイミングでその...
-多言語対応
--Index レベルで分ける。
--Type レベルで分ける。
--Document の属性に lang を用意する。
-データ・スキーマが異なるだけの場合
--Index レベルで分ける。
--Type レベルで分ける。
-Tribe Node で重複しない名称付与
***Types [#j4b96bde]
※ v6 以降では、Type指定が非推奨に。タイプ名の代わりに「_d...
***Documents [#jc568f72]
JSON形式のデータ
***Fields [#xbc2e352]
JSON形式のデータ中のキー
**検索処理の概要 [#tef1cf42]
***サーチ API [#z878230e]
-indexまで指定
GET|POST /{index}/_search
-typeまで指定
GET|POST /{index}/{type}/_search
-バリエーション
--index, typeは、[,]区切りで列挙可能。
--[*]をワイルドカードで使用可能。
--index, typeに、_allを指定可能。
-Alias~
index名には Alias を使用可能。
-ページング
--size: 1度に検索結果を取得する数
--from: スキップする検索結果数
***Mapping、Analysis、Query DSL [#a0374c2c]
-Mapping~
[[全文検索>#i3421c0a]]のindex生成
--どのフィールドが文字列、数値、日付、geolocationか?
---文字列フィールド:全文検索の対象か?
---日付フィールド:日付の形式は?
--_all フィールドをインデックス化するかどうか?
--動的に追加されるフィールドのマッピング
-Analysis~
言語処理や正規化などフィールドの値の加工について
-Query DSL~
JSON フォーマットによる検索条件の組み立て
**Apache Lucene [#g5b90cbe]
ドキュメント登録にはXML、JSONなどを使用
***全文検索 [#i3421c0a]
正確かつ効率的な検索アルゴリズム
-[[テキスト分析>#l79ecf84]]
-クエリ
--多数のクエリタイプ
--クエリ式の構文解析、誤字補完機能
--カスタムソート、フィルタリング
-スコアリング、ランキング
--Lucene's Practical Scoring Function
--[[BM25>言語処理(AI)#vade3462]]の様な[[TF-IDF>言語処理...
-検索結果のハイライト機能
-RESTライクAPI
***アナライザ [#l79ecf84]
-文書の索引付けと検索
--転置索引方式の採用
--[[形態素解析とN-gram>言語処理]]による単語切出
-参考
--Apache Lucene入門 - RONDHUIT~
https://www.rondhuit.com/lucene-for-bea-060710.pdf
***性能 [#q8792dbc]
1時間に150GB以上のインデックススループット/ランク付け処理
**ECS [#r62e8607]
ECS : Elastic Common Schema
-Elasticsearchにデータ投入するための新しい仕様基準
--共通フィールドセットとネーミングのガイドラインを定義
--データを一貫した方法で構造化し、カスタマイズにも対応す...
-以下の様々なケースでECSが生産性と性能をエンハンスする。
--ユーザがデータを検索するケース
--Kibanaでデータを調査するケース
--機械学習ジョブを構成するケース
--アラート機能を設定するケース
*参考 [#d0e8b5a7]
-効率的なPDCAのカギはストリーミングデータの可視化!|株式...
https://www.oro.com/ja/technology/005/
-楽しい可視化 : elasticsearchとSpark Streamingの出会い |...
http://www.intellilink.co.jp/article/column/bigdata-kk02....
**Wikipedia [#xcd4aa53]
-Elasticsearch~
https://ja.wikipedia.org/wiki/Elasticsearch
-Apache Lucene~
https://ja.wikipedia.org/wiki/Apache_Lucene
**Elastic [#v73c3baa]
-Elasticsearch | 分散型RESTful検索/分析エンジン~
https://www.elastic.co/jp/products/elasticsearch
-Elasticsearch for Hadoop~
https://www.elastic.co/jp/what-is/elasticsearch-hadoop
-オープンソースのElastic Stack~
(Elasticsearch、Kibana、Beats、Logsatsh)~
でリアルタイムな検索と分析~
https://www.elastic.co/jp/
**Qiita [#ffe93902]
***Elasticsearch [#i4d2b5e3]
-はじめての Elasticsearch~
https://qiita.com/nskydiving/items/1c2dc4e0b9c98d164329
-3分で分かった気になる、Elasticsearchとは?~
https://qiita.com/r548/items/3622048a622d9c0acc05
-Elasticsearch 超入門~
https://qiita.com/kws9/items/7695262be0befb94897f
-Kibanaで簡単! サクサク ビジュアライズしよう!~
https://qiita.com/kitfactory/items/9c2f990d87e33fab828a
-データベースとしてのElasticsearch~
https://qiita.com/rjkuro/items/95f71ad522226dc381c8
***Elastic Stack [#v0e2cb1f]
-Elastic Stackについて~
https://qiita.com/gitya107/items/1dc7cb98a5d7d583a684
**Developers.IO [#a0c52d94]
-Elasticsearch入門 | シリーズ~
https://dev.classmethod.jp/series/enter-elasticsearch/
--第1回 インデックスを設計する際に知っておくべき事~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第2回 データスキーマ設計のいろは~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第3回 ドキュメント管理は意外と高度なことができる~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第4回 検索の基本中の基本~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第5回 Elasticsearch の使いどころ~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第6回 基本コンセプトを理解する~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第7回 API の使い方をハンズオンで理解する 〜前編〜~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第8回 API の使い方をハンズオンで理解する 〜後編〜~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-戻る
--[[NoSQL]] > [[ドキュメント指向型>NoSQL - ドキュメント指...
--[[分散処理]]
*目次 [#z15c23bb]
#contents
*概要 [#kb1b2908]
ビッグデータの可視化のプロダクト
*詳細 [#x66435b3]
**Elasticsearch [#xeeae7a8]
***特長 [#qcdfb1f2]
-スケーラブル、スキーマレス、マルチテナント
-ドキュメントに対し高度な超高速全文検索が可能
***用途 [#wb866e22]
データ駆動型システム
-未来予測
-意思決定
-企画立案
***ストア、ストレージ [#i438cfb0]
-エンジン
--[[Apache Lucene(全文検索)>#g5b90cbe]]
--ドキュメントを保存・検索
--超高速全文検索に特化
---1000万ドキュメント位まで1台で対応可能
---それ以上は、[[Hadoop]]で処理を行う。
-Elasticsearchは、
--単体で分散処理も可能。
--ES-Hadoopで、
---HadoopデータをElastic Stackにインデックスし、
---Elasticsearchエンジンで高速処理することも可能。
>∴ [[NoSQLとしてみた場合、ドキュメント指向+分散処理系に...
**Elastic Stack [#r521f91b]
推奨のスタックみたいなもの~
([[Elasticsearch>#xeeae7a8]]、[[Kibana>#xdb2a250]]、[[Lo...
***Kibana [#xdb2a250]
JavaScript製の対話的な可視化ツール
***Logsatsh [#h0b258a7]
汎用的な[[ETL>EAI/ETL#eed58b6f]]ツール
***Beats [#h15c1264]
-[[Elastic Stack>#r521f91b]]専用感
-Goで開発された~
軽量データ収集ツール
-[[ECS>#r62e8607]]準拠
--自動構文解析機能付き
--自動データマッピング([[Elasticsearch>#xeeae7a8]])
--自動Dashboard生成([[Kibana>#xdb2a250]])
**RDB との比較 [#a377a192]
|RDB|Elasticsearch|h
|Databases|[[Indices>#u24be7b1]]|
|Tables|[[Types>#j4b96bde]]|
|Rows|[[Documents>#jc568f72]]|
|Columns|[[Fields>#xbc2e352]]|
***設計方法 [#q92b50e4]
-[[Nodes, Shards, Replica>#f34c97b1]]
-[[Indices>#u24be7b1]]レベルで分けるのか、[[Types>#j4b96b...
検討する必要がある。
***Nodes, Shards, Replica [#f34c97b1]
-Nodes
--クラスタを構成する
--下記のShardsが分散して配置される。
--Nodeの種類
---Master node (Master eligible node)~
・クラスタ情報を管理(Nodeの参加・離脱の管理、メタデータ...
・クラスタに1つのみ、 Master eligible node から動的に選出~
---Data node~
・document がindex されているshards を保持~
・CRUD、検索、aggregation のようなデータ操作を実行~
・デフォルトではすべての node が、Data node
---Ingest node~
・インデックス前にドキュメントに前処理 パイプライン定義 ...
・デフォルトではすべての node が、Ingest node
---Coordinating node (Coordinating only node)~
・リクエストのルーティング、検索・集計処理の取り纏め~
・Coordinating node と Kibana node の同居を推奨~
・すべての node が、Coordinating node(無効にできない)
---Machine learning node~
・有償オプション~
・機械学習
---Transform node~
・有償オプション~
・インデックスを変換するノード
---Remote_Cluster_Client~
・他のクラスタへの単方向接続~
・デフォルトでは有効のため、外部接続を制限する場合は無効...
-Shards~
クラスタ内で分散配置できるようにインデックスを分割した単位
--Indexが論理的な概念とすると、Shard は物理的な概念
--≒ [[Lucene>#g5b90cbe]]の1インスタンス
--Node を増やせば Shard が自動で再配置(スケールアウト)...
-Primary Shard
--書き込み可能
--数は Index 作成時に固定
--Replica Shard と同じ Node には配置されない。
-Replica Shard
--読み取り専用
--数はいつでも変更できる。
--Primary Shard と同じ Node には配置されない。
-参考
--Elasticsearchクラスタで必要なシャード数、ノード数を計算...
https://kazuhira-r.hatenablog.com/entry/2020/01/02/182732
***Indices [#u24be7b1]
-データ量や更新頻度に対する考慮
--複数の [[Shards>#f34c97b1]] から構成される。
--[[Shards>#f34c97b1]] を [[Nodes>#f34c97b1]] に分散する。
--1つの Index に対
---するデータ量や書き込み速度を分散できる。
---して、書き込み可能な [[Shards>#f34c97b1]] の数を変更で...
--親子関連のデータは別の Index にはできない
[[Type>#j4b96bde]] で分けで、
---親子関連のデータとして Index するか、
---1つのドキュメント内に Nested [[Type>#j4b96bde]] 型の...
>のどちらか。
-運用要件
--複数の Index に同じ名前の Alias をつけることができる。
--事前に新しい Index を作成し、公開したいタイミングでその...
-多言語対応
--Index レベルで分ける。
--Type レベルで分ける。
--Document の属性に lang を用意する。
-データ・スキーマが異なるだけの場合
--Index レベルで分ける。
--Type レベルで分ける。
-Tribe Node で重複しない名称付与
***Types [#j4b96bde]
※ v6 以降では、Type指定が非推奨に。タイプ名の代わりに「_d...
***Documents [#jc568f72]
JSON形式のデータ
***Fields [#xbc2e352]
JSON形式のデータ中のキー
**検索処理の概要 [#tef1cf42]
***サーチ API [#z878230e]
-indexまで指定
GET|POST /{index}/_search
-typeまで指定
GET|POST /{index}/{type}/_search
-バリエーション
--index, typeは、[,]区切りで列挙可能。
--[*]をワイルドカードで使用可能。
--index, typeに、_allを指定可能。
-Alias~
index名には Alias を使用可能。
-ページング
--size: 1度に検索結果を取得する数
--from: スキップする検索結果数
***Mapping、Analysis、Query DSL [#a0374c2c]
-Mapping~
[[全文検索>#i3421c0a]]のindex生成
--どのフィールドが文字列、数値、日付、geolocationか?
---文字列フィールド:全文検索の対象か?
---日付フィールド:日付の形式は?
--_all フィールドをインデックス化するかどうか?
--動的に追加されるフィールドのマッピング
-Analysis~
言語処理や正規化などフィールドの値の加工について
-Query DSL~
JSON フォーマットによる検索条件の組み立て
**Apache Lucene [#g5b90cbe]
ドキュメント登録にはXML、JSONなどを使用
***全文検索 [#i3421c0a]
正確かつ効率的な検索アルゴリズム
-[[テキスト分析>#l79ecf84]]
-クエリ
--多数のクエリタイプ
--クエリ式の構文解析、誤字補完機能
--カスタムソート、フィルタリング
-スコアリング、ランキング
--Lucene's Practical Scoring Function
--[[BM25>言語処理(AI)#vade3462]]の様な[[TF-IDF>言語処理...
-検索結果のハイライト機能
-RESTライクAPI
***アナライザ [#l79ecf84]
-文書の索引付けと検索
--転置索引方式の採用
--[[形態素解析とN-gram>言語処理]]による単語切出
-参考
--Apache Lucene入門 - RONDHUIT~
https://www.rondhuit.com/lucene-for-bea-060710.pdf
***性能 [#q8792dbc]
1時間に150GB以上のインデックススループット/ランク付け処理
**ECS [#r62e8607]
ECS : Elastic Common Schema
-Elasticsearchにデータ投入するための新しい仕様基準
--共通フィールドセットとネーミングのガイドラインを定義
--データを一貫した方法で構造化し、カスタマイズにも対応す...
-以下の様々なケースでECSが生産性と性能をエンハンスする。
--ユーザがデータを検索するケース
--Kibanaでデータを調査するケース
--機械学習ジョブを構成するケース
--アラート機能を設定するケース
*参考 [#d0e8b5a7]
-効率的なPDCAのカギはストリーミングデータの可視化!|株式...
https://www.oro.com/ja/technology/005/
-楽しい可視化 : elasticsearchとSpark Streamingの出会い |...
http://www.intellilink.co.jp/article/column/bigdata-kk02....
**Wikipedia [#xcd4aa53]
-Elasticsearch~
https://ja.wikipedia.org/wiki/Elasticsearch
-Apache Lucene~
https://ja.wikipedia.org/wiki/Apache_Lucene
**Elastic [#v73c3baa]
-Elasticsearch | 分散型RESTful検索/分析エンジン~
https://www.elastic.co/jp/products/elasticsearch
-Elasticsearch for Hadoop~
https://www.elastic.co/jp/what-is/elasticsearch-hadoop
-オープンソースのElastic Stack~
(Elasticsearch、Kibana、Beats、Logsatsh)~
でリアルタイムな検索と分析~
https://www.elastic.co/jp/
**Qiita [#ffe93902]
***Elasticsearch [#i4d2b5e3]
-はじめての Elasticsearch~
https://qiita.com/nskydiving/items/1c2dc4e0b9c98d164329
-3分で分かった気になる、Elasticsearchとは?~
https://qiita.com/r548/items/3622048a622d9c0acc05
-Elasticsearch 超入門~
https://qiita.com/kws9/items/7695262be0befb94897f
-Kibanaで簡単! サクサク ビジュアライズしよう!~
https://qiita.com/kitfactory/items/9c2f990d87e33fab828a
-データベースとしてのElasticsearch~
https://qiita.com/rjkuro/items/95f71ad522226dc381c8
***Elastic Stack [#v0e2cb1f]
-Elastic Stackについて~
https://qiita.com/gitya107/items/1dc7cb98a5d7d583a684
**Developers.IO [#a0c52d94]
-Elasticsearch入門 | シリーズ~
https://dev.classmethod.jp/series/enter-elasticsearch/
--第1回 インデックスを設計する際に知っておくべき事~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第2回 データスキーマ設計のいろは~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第3回 ドキュメント管理は意外と高度なことができる~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第4回 検索の基本中の基本~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第5回 Elasticsearch の使いどころ~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第6回 基本コンセプトを理解する~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第7回 API の使い方をハンズオンで理解する 〜前編〜~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
--第8回 API の使い方をハンズオンで理解する 〜後編〜~
https://dev.classmethod.jp/server-side/elasticsearch-gett...
ページ名: