複数のエンティティ バインディングを使用して ElasticSearch インデックスを構造化する方法
概要
ElasticSearch の統合 (ES) ) を既存のアプリケーションに組み込むと、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" } } } } }
Logstash SQLクエリ
ES インデックスを設定するには、次のクエリで Logstash JDBC 入力を使用できます。
以上が複数のエンティティ関係のための Elasticsearch インデックスを構造化するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。