मौजूदा HTTP इंटरफेस केवल साधारण कार्यक्षमता प्रस्तुत करता है। Manticore Search 2.5.1 में जोड़े गए नए एंडपॉइंट एक नया API लॉन्च करते हैं।
अब तक, 2 एंडपॉइंट मौजूद थे:
- /search - एक सरल प्रारूप में खोज क्वेरी निष्पादित करें
- /sql - एक SphinxQL चयन निष्पादित करें, इस प्रकार SphinxQL प्रारूप में खोज का पुन: उपयोग करने की अनुमति देता है बिना mysql क्लाइंट का उपयोग किए
नया एंडपॉइंट, /json , पहले 2 के विपरीत, HTTP पर JSON का उपयोग करके अपने आप में एक नया API प्रदान करने का प्रयास करता है, दोनों अनुरोधों और प्रतिक्रियाओं में।
कुछ लोग पूछ सकते हैं, जब हमारे पास पहले से SphinxQL है तो नया API जोड़ने की आवश्यकता क्यों है? इसके लाभ क्या होंगे?
Manticore Search का उपयोग करने का सामान्य तरीका SphinxQL का उपयोग करना है। वाक्यविन्यास मौजूदा SQL प्रोटोकॉल के समान है और आपको केवल एक MySQL क्लाइंट या लाइब्रेरी की आवश्यकता है। एक HTTP इंटरफेस को HTTP क्लाइंट की आवश्यकता होती है और अधिकांश भाषाएं पहले से ही एक के साथ आती हैं, इसलिए अतिरिक्त पैकेज स्थापित करने की कोई आवश्यकता नहीं है और और भी बेहतर, आप केवल एक ब्राउज़र (REST API एक्सटेंशन के साथ) का उपयोग करके इंजन से कनेक्ट कर सकते हैं और परीक्षण कर सकते हैं। ऐसे मामले भी हैं जब उपयोगकर्ता बिल्कुल MySQL या पारंपरिक डेटाबेस का उपयोग नहीं करते हैं और वे अपेक्षा करते हैं, जैसे अन्य प्रोजेक्ट करते हैं, एक HTTP प्रोटोकॉल।
दूसरा लाभ और अधिक महत्वपूर्ण यह है कि HTTP पर JSON का उपयोग करना अधिक जटिल अनुरोध और प्रतिक्रियाओं की अनुमति दे सकता है। भविष्य में, हम ऐसे एंडपॉइंट जोड़ सकते हैं जो केवल एक क्वेरी करने से अधिक कर सकते हैं, जैसे कि एक बार में एक से अधिक जुड़े हुए क्वेरी निष्पादित करना (मान लीजिए कि एक अपने पैरामीटर में दूसरे के परिणामों का उपयोग कर सकता है) और प्रतिक्रियाएं जो पंक्तियों के संग्रह से अधिक जटिल संरचनाएं समाहित कर सकती हैं।
डेटा हेरफेर के लिए वर्तमान एंडपॉइंट में /json/insert , /json/update , /json/replace और /json/delete शामिल हैं। /bulk भी है, जो डेटा हेरफेर संचालन को बैच में करने की अनुमति देता है और वे विभिन्न प्रकार के हो सकते हैं। ध्यान दें कि /json/bulk अनुरोध शरीर को newline-delimited json के रूप में आवश्यक बनाता है।
खोज /json/search एंडपॉइंट पर उपलब्ध है। खोज को JSON ऑब्जेक्ट के रूप में सम्मिलित किए गए क्वेरी के अमूर्त वाक्य-संरचना वृक्ष के रूप में व्यवस्थित किया गया है और इसमें पत्रक क्वेरी क्लॉज जैसे “match”, “range”, “sort” (जो full-text matches , attribute filtering के लिए उपयोग किए जाते हैं) या यौगिक क्वेरी क्लॉज जैसे “bool” (अन्य क्वेरी को तार्किक तरीके से संयोजित करने के लिए) या व्यवहार क्लॉज (जैसे “profile” प्रतिक्रिया में क्वेरी प्रोफाइलिंग सक्षम करने के लिए)। Text highlighting को भी क्वेरी अनुरोध में घोषित किया जा सकता है ताकि प्रतिक्रिया में हाइलाइट की गई स्निपेट प्राप्त हो सके। भौगोलिक दूरी भी कार्यात्मक है और इसे क्रमबद्ध करने में उपयोग किया जा सकता है। सुधार और नए आदेश भविष्य के विमोचन में जोड़े जाएंगे।
एक वाक्य खोज का साधारण उदाहरण:
curl -X POST 'http://localhost:9308/json/search' -d '{"index":"geodemo","query":{"match_phrase":{"name":"Gloucester City Middle School"}}}'
और प्रतिक्रिया:
{
"took": 1,
"timed_out": false,
"hits": {
"total": 1,
"hits": [
{
"_id": "7142245",
"_score": 4609,
"_source": {
"elevation": 0,
"population": 0,
"latitude": 0.69612807035446167,
"longitude": -1.3109307289123535,
"latitude_deg": 39.885200500488281,
"longitude_deg": -75.110801696777344,
"name": "Gloucester City Middle School and High School",
"feature_code": "SCH",
"country_code": "US",
"state_code": "NJ",
"level3_code": "",
"level4_code": "",
"dem": "",
"timezone": ""
}
}
]
}
}
API अभी भी एक प्रारंभिक चरण में है। हम Query DSL के समान एक वाक्यविन्यास रखने का लक्ष्य रखते हैं और SphinxQL में उपलब्ध बहुत सारे स्टफ अभी तक पोर्ट नहीं किए गए हैं। इसके लिए हमें उपयोगकर्ताओं से फीडबैक की आवश्यकता है जो मौजूदा APIs के बजाय JSON क्वेरी का उपयोग में रुचि रखते हैं। इसे एक प्रयास दें और हमें बताएं कि आपके विचार क्या हैं!