ElasticSearch में सॉर्ट करने के लिए फ़ील्ड के लिए कोई मैपिंग नहीं मिली


117

SearchParseExceptionयदि कोई दस्तावेज़ ऐसे फ़ील्ड हैं जिनमें सॉर्ट मानदंड का उपयोग नहीं किया गया है, तो Elasticsearch क्वेरी को पार्स करते समय फेंकता है।

SearchParseException: Parse Failure [क्रमबद्ध करने के लिए [मूल्य] के लिए कोई मानचित्रण नहीं मिला]

मैं इन दस्तावेज़ों को सफलतापूर्वक कैसे खोज सकता हूं, भले ही कुछ priceक्षेत्र याद आ रहे हों ?


1
आपके प्रश्न / उत्तर ने मेरी समस्या हल कर दी - धन्यवाद। मैंने इसे कुछ हद तक सामान्य करने के लिए संपादित किया है, यदि आपको यह शोभा नहीं देता है तो बेझिझक रोलबैक करें।
पॉल बेलोरा

1
इस मुद्दे को संभालने के लिए संदर्भ
एलीटसर्च

जवाबों:


116

अधिक खुदाई करने के बाद, मुझे नीचे दिए गए अनुसार समाधान मिला। सॉर्ट क्लॉज में ignore_unmappedस्पष्ट रूप से सेट किया जाना चाहिए true

"sort" : [
       { "rating": {"order" : "desc" , "ignore_unmapped" : true} },
       { "price": {"order" : "asc" , "missing" : "_last" , "ignore_unmapped" : true} }
]

आगे की जानकारी के लिए एलिटिक्स खोज संदर्भों पर एक नज़र डालें:


नमस्ते, मैं एक ही समस्या है और मुझे समझ में नहीं आता कि यह कैसे काम करता है ... लापता और ign_unmapped विशेषताएँ एक साथ सही काम करना चाहिए? यदि उदाहरण के लिए मैंने "_last" को याद नहीं किया और "असत्य" को अनदेखा किया, तो मुझे अभी भी समस्या है, लेकिन मैं चाहता हूं कि दस्तावेज़ सभी मामलों में परिणाम में हों, भले ही उनके पास विशेषता न हो।
c4k

मेरे पास यह समस्या है और "ign_unmapped" काम नहीं करता है अगर आपका _type खाली है (यानी बिना किसी दस्तावेज़ को अनुक्रमित किए)।
रीनाडोलुकमैन

7
नई रणनीति की तरह लग रहा उपयोग करने के लिए है unmapped_type
lukmdo

2
मेरे प्रश्नों ने हमेशा आज तक बिना किसी लाइब्रेरी आदि को अपडेट किए काम किया लेकिन आज मुझे भी यही त्रुटि मिलने लगी। मैंने अब जोड़ा "ignore_unmapped" : trueऔर यह फिर से काम करना शुरू कर दिया, लेकिन अजीब बात है, दृश्य के पीछे क्या हुआ है! कौन जाने! वैसे भी, अब यह काम करता है। +1
बेंटकोडर

1
क्या कोई "लापता" और "अप्रयुक्त" के बीच अंतर को स्पष्ट कर सकता है? एक निश्चित क्षेत्र के लिए, यदि कुछ दस्तावेज़ों में यह है जबकि अन्य नहीं हैं, तो क्या ऐसे क्षेत्र को "लापता" या "अनमैपेड" माना जाता है? क्या "लापता" का मतलब है कि दस्तावेज़ में फ़ील्ड है, लेकिन संबंधित मूल्य शून्य है?
शेर १०

43

उन दोनों के उदाहरण की तलाश करने वालों के लिए ignore_unmappedऔर unmapped_typeकृपया मेरी प्रतिक्रिया यहां देखें

ध्यान दें कि "ign_unmapped" अब "unmapped_type" के पक्ष में पदावनत हो गया है। यह # 7039 के भाग के रूप में किया गया था

प्रलेखन से: 1.4.0 से पहले ign_unmapped बूलियन पैरामीटर था, जो उत्सर्जन करने के लिए सॉर्ट मूल्यों पर निर्णय लेने के लिए पर्याप्त जानकारी नहीं थी, और क्रॉस-इंडेक्स खोज के लिए काम नहीं किया। यह अभी भी समर्थित है, लेकिन उपयोगकर्ताओं को इसके बजाय नए unmapped_type पर माइग्रेट करने के लिए प्रोत्साहित किया जाता है।

डिफ़ॉल्ट रूप से, खोज अनुरोध विफल हो जाएगा यदि कोई फ़ील्ड से संबद्ध मैपिंग नहीं है। अनमैप्ड_टाइप विकल्प उन फ़ील्ड्स को अनदेखा करने की अनुमति देता है जिनकी कोई मैपिंग नहीं है और उनके द्वारा सॉर्ट नहीं किया गया है। इस पैरामीटर के मान का उपयोग यह निर्धारित करने के लिए किया जाता है कि किस प्रकार के मान उत्सर्जित होते हैं। यहाँ इसका उपयोग कैसे किया जा सकता है इसका एक उदाहरण दिया गया है:

{
    "sort" : [
        { "price" : {"unmapped_type" : "long"} },
    ],
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

यदि किसी भी इंडेक्स को क्वाइर किया जाता है, उसकी कीमत के लिए मैपिंग नहीं होती है, तो एलीस्टेखर्च इसे ऐसे हैंडल करेगा जैसे कि कोई टाइपिंग की मैपिंग हो, इस इंडेक्स के सभी डॉक्युमेंट्स में इस फील्ड की कोई वैल्यू नहीं है।


3

जाहिर है ElasticSearch अशक्त मूल्यों पर सॉर्ट नहीं करेगा। मैं यह मान रहा था कि यह शुरुआत या अंत (SQL ऑर्डरिंग के साथ) के रूप में अशक्त माना जाएगा, लेकिन मेरा मानना ​​है कि यह इस त्रुटि को भी ट्रिगर करता है।

इसलिए यदि आप इस त्रुटि को देखते हैं, तो आपको यह सुनिश्चित करने की आवश्यकता हो सकती है कि ElasticSearch को भेजे जाने पर सॉर्ट विशेषता का डिफ़ॉल्ट मान हो।

मुझे यह त्रुटि रेल + इलास्टिकसर्च + टायर के साथ मिली थी क्योंकि सॉर्ट कॉलम में डिफ़ॉल्ट मूल्य नहीं था, इसलिए इसे null के लिए ES को भेजा जा रहा था।

यह समस्या इंगित करती है कि शून्य मान संभाल रहे हैं, लेकिन यह मेरा अनुभव नहीं था। यह कुछ भी कोशिश करने लायक है।


2

मैंने एक ही समस्या का अनुभव किया (Sorta; कुछ त्रुटियों को प्राप्त होगा, लेकिन कुछ परिणाम), लेकिन मेरे मामले में मेरी खोज रूट पर जारी की जा रही थी (कोई सूचकांक निर्दिष्ट नहीं), और मुझे जो त्रुटियां मिल रही थीं, क्योंकि खोज / आदेश भी था एक Kibana सूचकांक की तलाश में।

बेवकूफ त्रुटि, लेकिन शायद यह किसी और की मदद करेगा जो यहां समाप्त होता है।


मेरे पास एक ही मुद्दा है .. लेकिन जब मैं निर्दिष्ट करता हूं कि मैं अनमैप्ड को अनदेखा करता हूं, तो रूट को खोजते समय मुझे कोई छंटाई नहीं मिलती ... यह मेरे लिए खोज करने की क्षमता को सीमित करता है अगर मुझे सूचकांक को परिभाषित करना है ... तो मैं बस सभी को चाहूंगा यदि यह मौजूद है, तो एक फ़ील्ड द्वारा क्रमबद्ध किए जाने वाले मिलान परिणाम और न ही उन लोगों के लिए एक डिफ़ॉल्ट का उपयोग करें .. संपादित करें:
mgoetzke

2

एलेस्टिक्स खोज 6.4

बस सूचकांक निर्दिष्ट करें और यही किबाना में है

इससे पहले

GET /_search
{
 
  "query": {
    "exists": {
      "field": "document_id"
    }
  },
  "sort": [
    {
      "document_id": { "order": "asc"  },
      "created_at":  { "order": "desc" }
    }
  ]
}

उपरांत

GET /document-index/contact/_search  (here)
{

  "query": {
    "exists": {
      "field": "document_id"
    }
  },
  "sort": [
    {
      "document_id": { "order": "asc"  },
      "created_at":  { "order": "desc" }
    }
  ]
}


0

आप स्क्रिप्ट का उपयोग भी कर सकते हैं जो आपको कुछ लचीलापन देता है:

"sort" : {
    "_script" : {
        "type" : "number",
        "script" : {
            "lang": "painless",
            "source": "return !doc['price'].empty ? doc['price'].value : 0"
        },
        "order" : "desc"
    }
}

0

जब हम नीचे दिए गए कोड का उपयोग करते हैं, जहां जोड़ा_ऑन डेट है, तब क्या होता है !! विशेषता पाठ का विश्लेषण किया जाता है, जिसका अर्थ है कि संग्रहीत होने पर इसे अलग-अलग शब्दों में तोड़ दिया जाता है, और क्षेत्र में एक या अधिक शब्दों पर मुफ्त-पाठ खोजों की अनुमति देता है

इसलिए फ़ील्ड के साथ "टेक्स्ट" और "कीवर्ड" जुड़ा हुआ है, इसलिए यदि हमें क्वेरी में एकत्रीकरण का उपयोग करने की आवश्यकता है, तो हमें सामान्य कीवर्ड में फ़ील्ड मान की आवश्यकता है।

BEFORE

"_source":{....}
"query" : {...}
"sort": [
{
  "added_on": {
    "order": "desc"
  }
}
]

AFTER
"_source":{....}
"query" : {...}
"sort": [
{
  "added_on.keyword": {
    "order": "desc"
  }
}
]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.