2017-04-11 11 views
8

मैं लोचदार खोज के लिए नया हूं और मैं जरूरी और फिल्टर के बीच उलझन में हूं। मैं अपने शब्दों के बीच एक और कार्रवाई करने के लिए चाहते हैं, तो मैं इसelasticsearch में क्वेरी डीएसएल में आवश्यक और फ़िल्टर के बीच क्या अंतर है?

POST /xyz/_search 
{ 
    "query": { 
    "bool": { 
     "must" : [ 
      { 
      "term": { 
      "city": "city1" 
      } 
     }, 
     { 
      "term": { 
      "saleType": "sale_type1" 
      } 
     } 
     ] 
    } 
    } 
} 

जो मुझे दोनों शब्दों का मिलान आवश्यक परिणाम दे दी है, और इस

POST /xyz/_search 
{ 
    "query": { 
    "bool": { 
     "must" : [ 
      { 
      "term": { 
      "city": "city1" 
      } 
     } 
     ], 
     "filter": { 
     "term": { 
      "saleType": "sale_type1" 
     } 
     } 
    } 
    } 
} 

मैं एक ही प्राप्त की तरह फिल्टर का उपयोग कर पर किया था परिणाम, तो मुझे कब उपयोग करना चाहिए और मुझे फिल्टर का उपयोग कब करना चाहिए? अंतर क्या है?

+0

Elastcisearch सरकारी डॉक्स से सीधे जवाब का उल्लेख (पाया जा सकता है [यहां] https://www.elastic.co/guide/en/elasticsearch/reference/current/ क्वेरी फिल्टर-context.html # क्वेरी फिल्टर संदर्भ)। – avr

उत्तर

9

must स्कोर में योगदान देता है। filter में, क्वेरी का स्कोर अनदेखा किया गया है।

must और filter दोनों में, क्लॉज (क्वेरी) मिलान दस्तावेजों में दिखाई देना चाहिए। यही परिणाम प्राप्त करने का यही कारण है।

आप जाँच कर सकते हैं इस link

स्कोर

प्रत्येक दस्तावेज़ की प्रासंगिकता स्कोर एक सकारात्मक फ्लोटिंग प्वाइंट नंबर _score कहा जाता है का प्रतिनिधित्व करती है। _score जितना अधिक होगा, दस्तावेज़ उतना ही प्रासंगिक होगा।

एक क्वेरी क्लॉज प्रत्येक दस्तावेज़ के लिए _score उत्पन्न करता है।

पता करने के लिए कैसे स्कोर गणना की जाती है, इस link

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