दिलचस्प पोस्ट
फाइलें डाउनलोड करें और उन्हें स्थानीय रूप से फोनगैप / jQuery मोबाइल एंड्रॉइड और आईओएस एप्स के साथ स्टोर करें मैं सी में const / literal तार को कैसे जोड़ूं? आप XML में बाइनरी डेटा कैसे एम्बेड करते हैं? स्थानीय मशीन स्टोर प्रोग्राम में सी # का प्रयोग करके मैं एक प्रमाणपत्र कैसे स्थापित कर सकता हूं? नेविगेशन नियंत्रक के साथ सही तरीके से टैब बार नियंत्रक कैसे लागू करें Jquery का उपयोग कर एक अभिभावक तत्व से पाठ (आंतरिक तत्वों को निकाले बिना) कैसे निकालना है सी ++ कास्ट सिंटेक्स शैली पैरेंट व्यू नियंत्रक के एक सबव्यू में बाल दृश्य नियंत्रक का दृश्य जोड़ें किसी भी लम्बाई के अनुरोधों को अनुमति देने के लिए web.config को कॉन्फ़िगर कैसे करें I Iostream और iostream.h के बीच का अंतर PHP में डेटाबेस एक्सेस के साथ सिंगलटन के लिए उपयोग का कोई मामला है? एचटीएमएल में क्लिक किए गए तत्व के चारों ओर बिंदीदार रेखा कैसे निकालें आईफोन एसडीके के साथ आईफोन के कॉल लॉग को एक्सेस करना एनएटी ग्राफ पुस्तकालय के आसपास? विंडो में पोर्ट अग्रेषण

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

हाल ही में मैंने माइस्स्कल (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 | +------+-------------------------------+------------+------------+ 

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

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

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

मैं निश्चित रूप से इसे पूरी तरह से समतल कर दूंगा (यानी 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 को एक सरणी में विभाजित कर सकते हैं और आप जाने के लिए अच्छा है