2015-05-27 16 views
7

मैं नियम फ़िल्टर का उपयोग कर दस्तावेजों को फ़िल्टर करने की कोशिश कर रहा हूं। मुझे यकीन नहीं है कि फिल्टर में वाइल्डकार्ड कैसे पेश करें। मैंने इस तरह कुछ करने की कोशिश की:लोचदार क्वेरी डीएसएल: वाइल्डकार्ड शब्द फ़िल्टर में?

"filter":{ 
    "bool":{ 
     "must":{ 
      "terms":{ 
      "wildcard" : { 
       "aircraft":[ 
        "a380*" 
       ] 
      } 
     } 
     } 
    } 
} 

लेकिन मुझे इसके साथ SearchParseException मिलता है। फ़िल्टर फ्रेमवर्क के भीतर वाइल्डकार्ड का उपयोग करने का कोई तरीका नहीं है?

+1

आप उपसर्ग वाले प्रश्न खोज की तरह दिखता है। यू – demon101

उत्तर

9

terms फ़िल्टर वाइल्डकार्ड का समर्थन नहीं करता है, प्रश्न पूछते हैं। भी इस क्वेरी का प्रयास बजाय

{ 
    "query": { 
    "bool": { 
     "must": { 
     "wildcard": { 
      "aircraft": "a380*" 
     } 
     } 
    } 
    } 
} 

या आप पूरी तरह से फिल्टर का उपयोग करने की आवश्यकता है, तो आप regexp फिल्टर कोशिश कर सकते हैं,:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": { 
      "regexp": { 
       "aircraft": "a380.*" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

के लिए ngram का उपयोग कर सकते हैं क्या regexp शब्द फिल्टर के साथ काम करता है? – Mohitt

+2

'regexp'' फ़िल्टर 'फ़िल्टर से अलग है, अपने आप पर एक फ़िल्टर है। – Val

+0

प्रश्न फ़िल्टर से असाधारण रूप से धीमे हैं। मुझे लगता है कि शब्दों के बजाय, मुझे एक 'चाहिए' ब्लॉक के तहत एकाधिक regexp के लिए जाना चाहिए। – Mohitt

संबंधित मुद्दे