トップレベルのドキュメントモデル
Elasticsearch データのトップレベルドキュメントビューを使用すると、トップレベルの要素にすぐにアクセスできます。本製品 は、集計にネストされた要素を単一のカラムとして返します。
考慮すべき一つの側面はパフォーマンスです。ネストされたエレメントを処理してパースする時間とリソースを控えます。本製品 は、JSON データを読み込むためにストリーミングを使用して、返されたデータを一度パースします。もう一つ考慮すべきは、ネストされた親エレメントに格納されているデータにアクセスする必要があることと、ツールやアプリケーションがJSON を処理する能力です。
トップレベルドキュメントビューのモデリング
DataModel が"Document"(デフォルト)に設定されている場合、本製品 はデフォルトでトップレベルのオブジェクトのみをスキャンします。デフォルトのオブジェクトフラット化により、トップレベルのオブジェクトエレメントはカラムとして利用可能です。ネストされたオブジェクトは、集計されたJSON として返されます。
例
以下は、Raw データ のサンプルドキュメントに基づいたサンプルクエリとその結果です。クエリの結果、単一の"insured" テーブルが作成されます。
クエリ
次のクエリは、トップレベルのオブジェクトエレメントと車両配列を結果にプルします。
SELECT
[_id],
[name],
[address.street] AS address_street,
[address.city] AS address_city,
[address.state] AS address_state,
[insured_ages],
[vehicles]
FROM
[insured]
結果
データのドキュメントビューでは、(FlattenObjects をtrue に設定するとき)address オブジェクトが3カラムにフラット化され、_id, name、insured_ages 、およびvehicles エレメントが個別のカラムとして返され、結果として7カラムのテーブルが作成されます。
_id | name | address_street | address_city | address_state | insured_ages | vehicles | |
1 | John Smith | Main Street | Chapel Hill | NC | [ 17, 43, 45 ] | [{"year":2015,"make":"Dodge","model":"RAM 1500","body_style":"TK"},{"year":2015,"make":"Suzuki","model":"V-Strom 650 XT","body_style":"MC"},{"year":1992,"make":"Harley Davidson","model":"FXR","body_style":"MC"}]
| |
2 | Joseph Newman | Oak Street | Raleigh | NC | [ 23, 25 ] | [{"year":2010,"make":"Honda","model":"Accord","body_style":"SD"},{"year":2008,"make":"Honda","model":"Civic","body_style":"CP"}]
|