_boost

edit

Deprecated in 1.0.0.RC1.

See Function score instead of boost

Boosting is the process of enhancing the relevancy of a document or field. Field level mapping allows to define an explicit boost level on a specific field. The boost field mapping (applied on the root object) allows to define a boost field mapping where its content will control the boost level of the document. For example, consider the following mapping:

{
    "tweet" : {
        "_boost" : {"name" : "my_boost", "null_value" : 1.0}
    }
}

The above mapping defines a mapping for a field named my_boost. If the my_boost field exists within the JSON document indexed, its value will control the boost level of the document indexed. For example, the following JSON document will be indexed with a boost value of 2.2:

{
    "my_boost" : 2.2,
    "message" : "This is a tweet!"
}

Function score instead of boost

edit

Support for document boosting via the _boost field has been removed from Lucene and is deprecated in Elasticsearch as of v1.0.0.RC1. The implementation in Lucene resulted in unpredictable result when used with multiple fields or multi-value fields.

Instead, the Function Score Query can be used to achieve the desired functionality by boosting each document by the value in any field of the document:

{
    "query": {
        "function_score": {
            "query": {  
                "match": {
                    "title": "your main query"
                }
            },
            "functions": [{
                "field_value_factor": { 
                    "field": "my_boost_field"
                }
            }],
            "score_mode": "multiply"
        }
    }
}

The original query, now wrapped in a function_score query.

This function returns the value in my_boost_field, which is then multiplied by the query _score for each document.

Note, that field_value_factor is a 1.2.x feature.