Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एकाधिक निकाय बाइंडिंग के साथ ElasticSearch अनुक्रमणिका संरचना कैसे सेटअप करें

यह एक अच्छी शुरुआत है!

मैं निश्चित रूप से इसे समतल कर दूंगा (यानी denormalize ) और नीचे दिए गए जैसे दिखने वाले उत्पाद दस्तावेज़ों के साथ आएं। इस तरह आप केवल flags बनाकर उत्पादों और झंडों के बीच 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"]
}

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

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

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

  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 . को विभाजित कर सकते हैं एक सरणी में और आप जाने के लिए अच्छे हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Elasticsearch द्वारा ईमेल या टेलीफ़ोन का फ़ज़ी मिलान कैसे करें?

  2. मैं वेबसाइट के लिए इंस्टालर कैसे बना सकता हूं। पीएचपी mysql

  3. मैं LIMIT क्लॉज में बड़ी ऑफसेट के साथ MySQL क्वेरी को कैसे तेज कर सकता हूं?

  4. मैं mysqldump से आउटपुट को छोटी फाइलों में कैसे विभाजित करूं?

  5. मैसकल:उस तालिका से पंक्तियों का चयन करें जो दूसरे में नहीं हैं