ホームページ >バックエンド開発 >PHPチュートリアル >複数のエンティティ バインディングを使用して ElasticSearch インデックス構造を最適化する方法

複数のエンティティ バインディングを使用して ElasticSearch インデックス構造を最適化する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 22:58:29958ブラウズ

How to Optimize ElasticSearch Index Structure with Multiple Entity Bindings?

複数のエンティティ バインディングを使用して ElasticSearch インデックス構造を構成する方法

背景

ElasticSearch (ES) をレガシー アプリケーションと頻繁に統合するデータ構造とインデックス作成要件の違いにより、課題が生じます。複雑なリレーショナル スキーマの場合、データを非正規化しエンティティをフラット化すると、パフォーマンスが向上し、クエリが簡素化されます。

質問:

複数のエンティティ バインディング (n) を持つデータベースをフラット化するにはどうすればよいですか? :m 関係) ES で最適なインデックス作成を行うには?

解決策:

1.データの非正規化:

関連エンティティの埋め込み配列を含む、すべての関連データを含む製品ドキュメントを作成します。スキーマの例を次に示します。

{
  "id": "00c8234d71c4e94f725cd432ebc04",
  "title": "Alpha",
  "price": 589.0,
  "flags": ["Sellout", "Top Product"]
}

2.マッピング タイプ:

新しいスキーマに一致するようにマッピング タイプを構成します:

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"
        }
      }
    }
  }
}

3. SQL クエリ:

関連エンティティを結合し、フラグ タイトルを連結するクエリを使用してデータベースからデータを取得します:

以上が複数のエンティティ バインディングを使用して ElasticSearch インデックス構造を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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