最近、MySQLを使用してPHPで書かれたレガシー電子商取引アプリケーションにElasticSearch(ES)実装を開始しました。私はこのすべてのものに完全に新しいですし、ドキュメントを読むことはうまくありますが、私は本当に私に助言する経験を持つ誰かが必要です。複数エンティティバインディングを使用したElasticSearchインデックス構造の設定方法
ESのドキュメントから、私は新しいクラスタをセットアップできました。また、川が廃止され、置き換えられるべきであることも分かったので、それらをLogstashとJDBC MySQLコネクタに置き換えました。
私はこの時点で:アプリケーションのデータベース構造が本当に最適ではなく、ある
Logstash
- 交換が非常に難しいですが、可能な限り最良の方法でESインデックスに複製したいと思います。
DB構造:
製品
+-------------------------------+-------+--------+ | Id | Title | Price | +-------------------------------+-------+--------+ | 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 | | 018357657529fef056cf396626812 | Beta | 355,00 | | 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00 | +-------------------------------+-------+--------+
フラグ
+------------+-------------+ | Id | Title | +------------+-------------+ | sellout | Sellout | | discount | Discount | | topproduct | Top Product | +------------+-------------+
flagsProducts(N:Mのピボット)
+------+-------------------------------+------------+------------+ | Id | ProductId | FlagId | ExternalId | +------+-------------------------------+------------+------------+ | 1552 | 00c8234d71c4e94f725cd432ebc04 | sellout | NULL | | 2845 | 00c8234d71c4e94f725cd432ebc04 | topproduct | NULL | | 9689 | 018357657529fef056cf396626812 | discount | NULL | | 4841 | 01a2c32ceeff0fc6b7dd4fc4302ab | discount | NULL | +------+-------------------------------+------------+------------+
これらの文字列IDは完全な災害です(ただし、私は今それらを処理しなければなりません)。最初はESへの商品インデックスのフラットな構造を取るべきだと思っていましたが、複数のエンティティバインディングはどうですか?
mysqlデータをESに移動する場合:https://sysadminci.wordpress.com/2016/01/06/import-mysql-data-in-elasticsearch-server/ –
フラットなデータ構造が最良のようですこれまでのアプローチ。このインデックスに必要なクエリの要件はどれですか? ESのデータ構造について考えることは、使用するクエリについても考えていることを意味します。 –
@falnyr、あなたはあなたの質問に関して過去7日間に恋をしていません。必要な情報はありますか? – Val