कोई [क्वेरी] [फ़िल्टर्ड] के लिए पंजीकृत नहीं


108

मेरे पास एक क्वेरी है जिसे मुझे परिणामों को फ़िल्टर करने की आवश्यकता है।

यह मेरी क्वेरी है

{
    "query": {
        "filtered": {
            "query": {
                "multi_match": {
                    "default_operator": "AND",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

मैं एक त्रुटि कह रहा हूँ no [query] registered for [filtered]। मेरे पास फ़िल्टर किए गए फ़ील्ड के लिए स्पष्ट रूप से एक क्वेरी है। मैं इलास्टिक्स खोज पृष्ठ पर फ़िल्टर किए गए क्वेरी दस्तावेज़ में दिए गए प्रारूप का अनुसरण कर रहा हूं। https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html

जवाबों:


185

filteredक्वेरी पदावनत और ES 5.0 में हटा दिया गया है। अब आपको bool/must/filterइसके बजाय क्वेरी का उपयोग करना चाहिए ।

{
    "query": {
        "bool": {
            "must": {
                "multi_match": {
                    "operator": "and",
                    "fields": [
                        "author",
                        "title",
                        "publisher",
                        "year"
                    ],
                    "query": "George Orwell"
                }
            },
            "filter": {
                "terms": {
                    "year": [
                        1980,
                        1981
                    ]
                }
            }
        }
    }
}

यहाँ दो प्रश्नों के बीच अंतर हैं:

3,4c3,4
<         "bool": {
<             "must": {
---
>         "filtered": {
>             "query": {
6c6
<                     "operator": "and",
---
>                     "default_operator": "AND",

पुनश्च: आप जिस संदर्भ पृष्ठ को देख रहे हैं, वह परिशिष्ट के "हटाए गए पृष्ठों" में स्थित है, इसलिए यह अब मुख्य दस्तावेज का हिस्सा नहीं है।


4
5.5 का उपयोग करते समय ऐसा लगता है कि default_operator को मल्टी_मैच क्वेरी से वेल वैल से हटा दिया गया है, इसलिए शायद यह जवाब देने लायक है क्योंकि इसने मुझे गलत सड़क के नीचे ले जाने के लिए यह मान लिया था कि ऊपर काम करने जा रहा था, मैंने अपने फील्ड से मिलान करने के लिए क्वेरी में संशोधन किया और फिर उसे महसूस किया। काम नहीं किया! यह मेरे लिए एक साधारण फिक्स था, हालांकि केवल डिफॉल्ट ऑपरेटर को हटाने के लिए, लेकिन शायद भविष्य के पाठकों के लिए संपादन के लायक हो, त्रुटि यह है: [multi_match] क्वेरी [default_operator] का समर्थन नहीं करता
Birdy

3
@ बिरदी वास्तव में पैरामीटर का नाम है operatorऔर नहीं default_operator, मैंने अपने उत्तर में संशोधन किया है, इसके बारे में क्षमा करें।
वैल

वैल - अगर आपको एक मिनट मिल जाता है तो क्या आप मुझे एक लॉगस्टैश मुद्दे पर मदद कर सकते हैं, मैंने अपना सिर 48 घंटे से अधिक समय के लिए टेबल से टकराया है और मुझे पता है कि आप इस क्षेत्र में एक विशेषज्ञ हैं जो दिन को बचाने में मदद कर सकते हैं, धन्यवाद मैं हमेशा के लिए ऋण में होगा अगर तुम कर सकते हो !! stackoverflow.com/questions/45577572/…
बिर्डी

धन्यवाद, यह मेरे लिए काम किया जब एक ES5.1 उदाहरण के उन्नयन के लिए 7.1
jhob101
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.