複数のエンティティ バインディングを使用した ElasticSearch インデックス構造
ElasticSearch (ES) 統合のためにデータベース構造を最適化する必要性を理解するには、その方法を検討することが不可欠です。複雑なリレーショナル データをフラット化された ES インデックスにモデル化するStructure.
フラット構造における複数のエンティティ バインディング
非正規化は、データ ストレージを最適化するための重要な手法です。たとえば、ピボット テーブルを介して製品とフラグの間の N:M 関係を維持する代わりに、各製品ドキュメントに関連するフラグの配列が含まれるフラット ES インデックスを作成することを検討してください。
製品ドキュメント構造
フラット化された製品ドキュメントは次のようになります。構造:
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] }
ES インデックスの製品マッピング タイプ
このフラット化された構造の ES マッピング タイプは次のようになります:
PUT products { "mappings": { "product": { "properties": { "id": { "type": "string", "index": "not_analyzed" }, "title": { "type": "string" }, "price": { "type": "double", "null_value": 0.0 }, "flags": { "type": "string", "index": "not_analyzed" } } } } }
SQL を使用したデータの抽出クエリ
Logstash 処理に必要なデータをデータベースから取得するには、次のように SQL クエリを使用できます。
以上が複雑なリレーショナル データをフラット化された ElasticSearch インデックス構造にモデル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。