2014-09-29 6 views
10

पूर्ण पाठ खोज कैसे करें और फ़िल्टर करें? मैं language_id = 10 के साथ दस्तावेज़ों के बीच एक पाठ खोजना चाहता हूं। मैंने इसे इस तरह से आजमाया है:लोचदार खोज में query_string के बगल में फ़िल्टर का उपयोग

{ 
    "query": { 
    "query_string": { 
     "query": "Declared" 
    }, 
    { 
     "filtered": { 
     "filter": { 
      "term": { 
      "language_id": 10 
      } 
     } 
     } 
    } 
    } 
} 

लेकिन ऐसा लगता है कि यह सही नहीं है। इसे कैसे ठीक करें?

उत्तर

12

हाँ, फ़िल्टर किए गए क्वेरी का सिंटैक्स थोड़ा बोझिल है। AFAIK इसे इस तरह दिखना चाहिए:

{ 
    "query":{ 
     "filtered":{ 
     "query":{ 
      "query_string":{ 
       "query":"Declared" 
      } 
     }, 
     "filter":{ 
      "term":{ 
       "language_id":10 
      } 
     } 
     } 
    } 
} 
+0

मैं अपने प्रारूप की कोशिश की लेकिन यह काम नहीं करता, फिल्टर @ केविन जवाब के प्रारूप में बेहतर काम कर रहे हैं। कृपया एक देखें – minocha

+0

आह जो एक टाइपो था, निश्चित – Ashalynd

3

क्षमा करें Ashalynd लेकिन फ़िल्टर को आपके उत्तर में सही स्थान नहीं रखा गया है।

यह बेहतर काम कर रहा है:

{ 
    "query":{ 
     "filtered":{ 
     "query":{ 
      "query_string":{ 
       "query":"Declared" 
      } 
     }, 
     "filter":{ 
      "term":{ 
       "language_id":10 
      } 
     } 
     } 
    } 
} 
+0

यह ऐसा है जो @Ashalynd द्वारा वर्णित एक है और नहीं .. एक बड़ी मदद धन्यवाद! – minocha

5

संस्करण 5.2 में, फ़िल्टर किए गए क्वेरी bool क्वेरी ने ले ली है, और मेरे लचीला 5.2 उदाहरण पर त्रुटि देता है। here देखें।

नई वाक्य रचना है:

{ 
    "query":{ 
     "bool":{ 
     "must":{ 
      "query_string":{ 
       "query":"...query..." 
      } 
     }, 
     "filter":{ 
      "term":{ 
       "language_id":10 
      } 
     } 
     } 
    } 
} 
संबंधित मुद्दे