在弹性搜索中提升特定字段值

时间:2014-04-14 06:52:55

标签: search elasticsearch

您好我需要根据字段的特定值来提升文档。我的文档包含一个名为Region的字段。基于该区域中存在的值,我需要提升我的文档.. 这些是我的文件

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

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

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

我尝试在查询中使用rescore查询,看起来像这样

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

但它根本不能正常工作..有什么方法可以解决这个问题吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

为什么重新加载,您只需要提升。根据您使用的查询类型,可以在

中进行提升
"query_string": {
  "fields":["region^56"],
  "use_dis_max" : true,
      "query": "mumbai"
}

其中^ 56是提升值。

您也可以使用http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html

中提到的内容

如果您正在使用bool查询,则可以使用此类提升来增强所有查询

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

}