ホームページ  >  記事  >  バックエンド開発  >  複雑なリレーショナル データをフラット化された ElasticSearch インデックス構造にモデル化する方法

複雑なリレーショナル データをフラット化された ElasticSearch インデックス構造にモデル化する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 14:12:02751ブラウズ

How to Model Complex Relational Data Into a Flattened ElasticSearch Index Structure?

複数のエンティティ バインディングを使用した 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。