複数のエンティティ バインディングを使用して ElasticSearch インデックス構造を設定する方法
概要
データを効率的に管理およびクエリするには、効果的な ElasticSearch (ES) インデックス構造が不可欠です。複数のエンティティ バインディングを操作する場合、検索と取得のパフォーマンスを最適化するためにインデックスを最適化することが不可欠です。
データ構造のフラット化
提供されたデータベース構造では、複数のテーブルは、製品とそれに関連するフラグを表すために使用されます。 ES インデックスを簡素化するには、データ構造を平坦化し、非正規化することをお勧めします。フラグを含むすべての関連情報を含む製品ドキュメントを作成することで、製品とフラグの間の N:M 関係を排除します。このアプローチにより、フラグ属性のクエリが簡単になります。
製品ドキュメントの例
{ "id": "00c8234d71c4e94f725cd432ebc04", "title": "Alpha", "price": 589.0, "flags": ["Sellout", "Top Product"] } { "id": "018357657529fef056cf396626812", "title": "Beta", "price": 355.0, "flags": ["Discount"] } { "id": "01a2c32ceeff0fc6b7dd4fc4302ab", "title": "Gamma", "price": 0.0, "flags": ["Discount"] }
製品マッピング タイプ
製品ドキュメントの 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 クエリ
データベースから必要なデータを抽出するには、変更された SQL クエリが必要です:
以上が複数のエンティティ バインディング用に ElasticSearch インデックス構造を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。