में एक ही क्वेरी में 'gt` और `fields` का उपयोग कैसे करें previous question में, मुझे fields
पर query_string
क्वेरी में पेश किया गया था और यह दस्तावेज़ के नेस्टेड फ़ील्ड को खोजने में मेरी सहायता कैसे कर सकता है।Elasticsearch
{
"query": {
"query_string": {
"fields": ["*.id","id"],
"query": "2"
}
}
}
लेकिन यह केवल मिलान के लिए काम करता है, अगर मैं कुछ तुलना करना चाहता हूं तो क्या होगा? कुछ पढ़ने और परीक्षण के बाद, ऐसा लगता है कि range
जैसे प्रश्न fields
का समर्थन नहीं करते हैं। क्या कोई तरीका है कि मैं range
क्वेरी कर सकता हूं, उदा। किसी तारीख पर, उस क्षेत्र में जिसे दस्तावेज़ पदानुक्रम में कहीं भी बिखराया जा सकता है? स्पष्ट रूप से Reply.date
को पता दिए बिना
{
"id" : 1,
"Comment" : "Comment 1",
"date" : "2016-08-16T15:22:36.967489",
"Reply" : [ {
"id" : 2,
"Comment" : "Inner comment",
"date" : "2016-08-16T16:22:36.967489"
} ]
}
वहाँ date
क्षेत्र (जैसे date > '2016-08-16T16:00:00.000000'
) जो क्योंकि नेस्टेड क्षेत्र के दिए गए दस्तावेज़ से मेल खाता है, पर खोजते समय एक प्रश्न है,:
अर्थात निम्नलिखित दस्तावेज़ पर विचार? (मैं पता निम्न क्वेरी सही नहीं है) कुछ इस तरह:
{
"query": {
"range" : {
"date" : {
"gte" : "2016-08-16T16:00:00.000000",
},
"fields": ["date", "*.date"]
}
}
}
तुम समझा कृपया सकते हैं/डब्ल्यू पर एक दस्तावेज़ देखें: है कि यह क्रम में प्राप्त करने के लिए आपको क्या चाहिए रेंज प्रश्नों का समर्थन करता है टोपी '\ *' कर रही है? और क्या मुझे पहले 'फ़ील्ड' का उपयोग करना चाहिए? – Mehran
यह [क्वेरी स्ट्रिंग क्वेरी सिंटैक्स] में है (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#_field_names) दस्तावेज़ "फ़ील्ड में नाम "खंड। आपको 'फ़ील्ड्स' का उपयोग करने की आवश्यकता नहीं है, वाइल्डकार्ड इसे अनावश्यक बनाता है। '\ * दिनांक' का अर्थ है 'दिनांक' (नेस्टेड वाले समेत) के साथ समाप्त होने वाला कोई भी क्षेत्र। बैकस्लैश वहां है क्योंकि हमें वाइल्डकार्ड '*' से बचने की आवश्यकता है जो क्वेरी स्ट्रिंग सिंटैक्स में एक आरक्षित चरित्र है। – Val