मैं स्प्रिंग वेब प्रोजेक्ट में एक खोज सेवा के रूप में लोचदार खोज का उपयोग कर रहा हूं जो ईएस के साथ संवाद करने के लिए परिवहन क्लाइंट का उपयोग कर रहा है।ElasticSearch में जावा एपीआई का उपयोग करते समय JSON DSL से QueryBuilder का निर्माण कैसे करें?
मुझे आश्चर्य है कि कोई ऐसी विधि मौजूद है जो JSON DSL से QueryBuilder का निर्माण कर सके। उदाहरण के लिए, इस बूल क्वेरी डीएसएल जेएसओएन को एक क्वेरीबिल्डर में कनवर्ट करें।
{
"query" : {
"bool" : {
"must" : { "match" : {"content" : "quick"},
"should": { "match": {"content" : "lazy"}
}
}
}
मैं इस विधि की जरूरत है क्योंकि मैं वेब सामने की ओर से उपयोगकर्ता की bool स्ट्रिंग इनपुट प्राप्त है, और एक QueryBuilder को यह bool स्ट्रिंग पार्स करने की है। हालांकि यह QueryBuilders.boolQuery().must(matchQB).should(shouldQB).must_not(mustNotQB)
का उपयोग करने के अनुरूप नहीं है। क्योंकि हमें कई जरूरी या गैर-पूछताछ की आवश्यकता हो सकती है।
यदि कोई विधि मौजूद है तो JSON DSL से क्वेरीब्यूल्डर का निर्माण कर सकते हैं या वैकल्पिक समाधान मौजूद हैं, यह बहुत आसान होगा।
पीएस: मुझे दो विधि मिल गई हैं जो ईएस खोज के लिए एक डीएसएल स्ट्रिंग को क्वेरीब्यूल्डर में लपेट सकती हैं। एक WrapperQueryBuilder, यहां विवरण देखें। http://javadoc.kyubu.de/elasticsearch/HEAD/org/elasticsearch/index/query/WrapperQueryBuilder.html दूसरा QueryBuilders.wrapperQuery (स्ट्रिंग डीएसएल) है।
धन्यवाद, मैं दो मिल गया है ईएस एपीआई में विधि जो डीएसएल स्ट्रिंग को क्वेरीब्यूल्डर को लपेट सकती है, एक है WrapperQueryBuilder, दूसरा QueryBuilders.wrapperQuery() – Armstrongya
{"क्वेरी":} भाग को छोड़कर आपकी मदद के लिए धन्यवाद, धन्यवाद। – Armstrongya
ईएस 5.0 का उपयोग करने वाले आप में से, यह अब काम नहीं करता है: https://discuss.elastic.co/t/set-source-in-searchrequestbuilder-with-es5-0-and-java-api/66870 –