2015-09-28 6 views
13

मैं एक प्रश्न (अच्छी तरह से इसे का एक हिस्सा - बाकी पृष्ठांकन तरह महत्वहीन है):Elasticsearch - उच्च मूल्य के साथ बढ़ावा नेस्ट क्वेरी

"query": { 
    "filtered": { 
     "query": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "is_active": true 
       } 
      } 
      ], 
      "should": [ 
      { 
       "bool": { 
       "must": [ 
        { 
        "nested": { 
         "path": "skills", 
         "query": { 
         "bool": { 
          "must": [ 
          { 
           "bool": { 
           "must": [ 
            { 
            "range": { 
             "skills.value": { 
             "gte": "2" 
             } 
            } 
            }, 
            { 
            "term": { 
             "skills.skill.name": "php" 
            } 
            } 
           ] 
           } 
          } 
          ] 
         } 
         } 
        } 
        } 
       ], 
       "boost": 2 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 

यह प्रोफ़ाइल खोज है, जो मूल्य के साथ एक कौशल "PHP" है के लिए है 2 या अधिक उपयोगकर्ता एकाधिक कौशल => मूल्य जोड़ी खोज सकता है। यह ठीक काम कर रहा है, लेकिन मेरे पास एक प्रश्न है:

मिलान कौशल के लिए थोड़ा बढ़ावा कैसे प्राप्त करें जिसमें उच्च कौशल है। औसत, केवल PHP मान 3 के साथ व्यक्ति को PHP 2 के साथ किसी भी खोज परिणामों में अधिक होना चाहिए अगर दोनों सही मैच हैं।

उत्तर

3

मैं function_score का उपयोग कर ऐसा करते हैं और करने के लिए सुझाव और अधिक विशेष रूप field_value_factor function जो (एक वैकल्पिक कारक है जिसके द्वारा फ़ील्ड मान गुणा करने के लिए) के साथ स्कोरिंग गणना में एक क्षेत्र मान का उपयोग करने की अनुमति देता है:

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "is_active": true 
       } 
      } 
      ], 
      "should": [ 
      { 
       "nested": { 
       "path": "skills", 
       "query": { 
        "function_score": { 
        "query": { 
         "bool": { 
         "must": [ 
          { 
          "range": { 
           "skills.value": { 
           "gte": "2" 
           } 
          } 
          }, 
          { 
          "term": { 
           "skills.skill.name": "php" 
          } 
          } 
         ] 
         } 
        }, 
        "functions": [ 
         { 
         "field_value_factor": { 
          "field": "skills.value", 
          "factor": 2 
         } 
         } 
        ] 
        } 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

हो रही मुद्दा: : "TransportError: TransportError (500, u'search_phase_execution_exception ', u'org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData को org.elasticsearch.index.fielddata.IndexNumericFieldData') पर नहीं डाला जा सकता है" –

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