Radhika.S
Radhika.S

Reputation: 395

Boosting specific field value in Elastic search

Hi I need to boost the documents based on the on a particular value of a field.. My documents contains a field called Region.. Based on the value present in the region i need to boost my documents.. These are my documents

{
    "title":"INOX: Malleshwaram - Mantri Square",
    "region":"Bangalore"
  }

    {
    "title":"INOX: Bund Garden Road",
    "region":"Pune"
   }

   {
    "title":"INOX: Glomax Mall, Kharghar",
    "region":"Mumbai"
  }

I have tried to use rescore query in my query which look like this

"rescore" : {
      "query" : {
          "score_mode":"total",
          "query_weight" : 2.5,
         "rescore_query_weight" : 0.5,
         "rescore_query" : {
            "match" : {
               "region" : {
                  "query" : "mumbai",
                   "slop" : 2
               }
            }
         }
      }
   }
} 

But its not working properly as required..Is there any way to solve this?.. Thanks in advance!

Upvotes: 0

Views: 1509

Answers (1)

Shady Keshk
Shady Keshk

Reputation: 570

Why rescoring, all you need is boosting. Based on the query type you are using, boosting is possible in

"query_string": {
  "fields":["region^56"],
  "use_dis_max" : true,
      "query": "mumbai"
}

where ^56 is the boosting value.

You can also use as mentioned here http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html

If you are using the bool query you can use boost like this to boost all queries

{
"bool" : {
    "must" : {
        "term" : { "region" : "mumbai" }
    },
    "boost" : 25.0
}

}

Upvotes: 2

Related Questions