दिलचस्प पोस्ट
सी # में एरे की तुलना करना जावास्क्रिप्ट: ऑपरेटर ओवरलोडिंग वॉली जेसनऑब्जेक्ट रिक्वेस्ट पोस्ट का अनुरोध काम नहीं कर रहा है रेल और रूबी 1.9 के साथ अमान्य multibyte char (US-ASCII) एंड्रॉइड की <layer-list> को समझना दूसरा कॉल करने के लिए 2 कॉलम का उपयोग करके Vlookup कैसे फाइल सिस्टम समवर्ती पढ़ा / लिखते हैं? सभी संभावित संयोजन उत्पन्न करना संदर्भ-टू-कॉन्स्ट के रूप में अपवाद क्यों पकड़ते हैं? HTML से angular2 घटक के चयनकर्ता टैग को कैसे हटाए / बदलना है Google Chrome मुद्रण पृष्ठ तोड़ता है सीएसएस अस्वीकृति छद्म श्रेणी: नहीं () अभिभावक / पूर्वजों तत्वों के लिए URLConnection या HTTPClient: जो बेहतर कार्यक्षमता और अधिक दक्षता प्रदान करता है? SQL सर्वर 2008 एक्सप्रेस में एक ही सर्वर पर SQL सर्वर डेटाबेस क्लोन कैसे कर सकता हूं? आईफ़ोन पर एक फाइल में प्रवेश करना

एकाधिक निकाय बाइंडिंग के साथ लचीलाशोध सूचकांक संरचना कैसे सेटअप करें

हाल ही में मैंने माइस्स्कल (MySQL) का प्रयोग करके PHP में लिखी गई विरासत ई-कॉमर्स ऐप में एलैस्टिकशोच (ईएस) कार्यान्वयन पर काम करना शुरू कर दिया है। मैं इस सब चीज़ों के लिए पूरी तरह से नया हूँ और डॉक्स पढ़ना ठीक है, फिर भी मुझे वास्तव में किसी को अनुभव करने के लिए अनुभव की जरूरत है।

ईएस प्रलेखन से मैं एक नया क्लस्टर सेटअप करने में सक्षम था और मुझे यह भी पता चला कि नदियों को हटा दिया गया है और उन्हें बदला जाना चाहिए, इसलिए मैंने उन्हें लॉगस्टैश और जेडीबीसी माय एसक्यूएल कनेक्टर के साथ बदल दिया।

इस बिंदु पर मेरे पास है:

  • ElasticSearch
  • Logstash
  • JDBC MySQL ड्राइवर
  • MySQL सर्वर

आवेदन का डेटाबेस संरचना वास्तव में इष्टतम नहीं है और इसे बदलने में बहुत मुश्किल है, लेकिन मैं इसे सबसे अच्छा संभव तरीके से ES सूचकांक में दोहराना चाहता हूं।

डीबी संरचना:

उत्पाद

+-------------------------------+-------+--------+ | Id | Title | Price | +-------------------------------+-------+--------+ | 00c8234d71c4e94f725cd432ebc04 | Alpha | 589,00 | | 018357657529fef056cf396626812 | Beta | 355,00 | | 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0,00 | +-------------------------------+-------+--------+ 

झंडे

 +------------+-------------+ | Id | Title | +------------+-------------+ | sellout | Sellout | | discount | Discount | | topproduct | Top Product | +------------+-------------+ 

झंडे उत्पाद (n: मी पिवट)

 +------+-------------------------------+------------+------------+ | Id | ProductId | FlagId | ExternalId | +------+-------------------------------+------------+------------+ | 1552 | 00c8234d71c4e94f725cd432ebc04 | sellout | NULL | | 2845 | 00c8234d71c4e94f725cd432ebc04 | topproduct | NULL | | 9689 | 018357657529fef056cf396626812 | discount | NULL | | 4841 | 01a2c32ceeff0fc6b7dd4fc4302ab | discount | NULL | +------+-------------------------------+------------+------------+ 

उन स्ट्रिंग आईडी एक पूर्ण आपदा हैं (लेकिन मुझे उनके साथ अब सौदा करना होगा)। सबसे पहले मैंने सोचा कि मुझे ईएस के लिए उत्पाद इंडेक्स का एक फ्लैट संरचना करना चाहिए, लेकिन कई इकाई बाइंडिंग के बारे में क्या?

वेब के समाधान से एकत्रित समाधान "एकाधिक निकाय बाइंडिंग के साथ लचीलाशोध सूचकांक संरचना कैसे सेटअप करें"

यह एक शानदार शुरुआत है!

मैं निश्चित रूप से इसे पूरी तरह से समतल कर दूंगा (यानी denormalize ) और उत्पाद दस्तावेज़ों के साथ आना चाहिए जो कि नीचे की तरह दिखते हैं इस तरह से आप प्रत्येक उत्पाद के लिए flags सरणी बनाने के द्वारा उत्पादों और झंडे के बीच एन: एम रिश्ते से छुटकारा पाएं। इस प्रकार यह झंडे पूछना आसान होगा।

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

उत्पाद मानचित्रण प्रकार इस तरह दिखेगा:

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

चूंकि आपके पास पहले से लॉग -स्टैश जेडीबीसी इनपुट है, आप जो भी याद नहीं रखते हैं, वह उत्पादों और संबद्ध झंडे लाने के लिए उचित एसक्यूएल क्वेरी है।

  SELECT p.Id as id, p.Title as title, p.Price as price, GROUP_CONCAT(f.Title) as flags FROM Products p JOIN flagsProducts fp ON fp.ProductId = p.Id JOIN Flags f ON fp.FlagId = f.id GROUP BY p.Id 

आप इन पंक्तियों को किस प्रकार प्राप्त करेंगे:

 +-------------------------------+-------+-------+---------------------+ | id | title | price | flags | +-------------------------------+-------+-------+---------------------+ | 00c8234d71c4e94f725cd432ebc04 | Alpha | 589 | Sellout,Top product | | 018357657529fef056cf396626812 | Beta | 355 | Discount | | 01a2c32ceeff0fc6b7dd4fc4302ab | Gamma | 0 | Discount | +-------------------------------+-------+-------+---------------------+ 

लॉगस्टैस फ़िल्टर का प्रयोग करके आप flags को एक सरणी में विभाजित कर सकते हैं और आप जाने के लिए अच्छा है