es 多字段分词查询优化

es多字段查询时,优化字段查询权重.比如:有2个字段nameteacher 看下面查询

{
  "query": {
    "bool": {
	"should": [
           {"term":{"name":"文化"}},
           {"term":{"teacher":"文化"}}
	]
    }
  }
}

这样去查的话,nameteacher权重相同,但是如果想优先排name中包含文化的数据,使用下面查询

{
  "query": {
    "bool": {
      "should": [
        {"term":{"name":"文化"}}, 
        {"bool": {
            "should": [{"term":{"teacher":"文化"}}]
          }
        }
      ]
    }
  }
}

把对teacher的查询嵌套到对name查询的里面,那么对name计算权重就会加大.

使用minimum_should_match参数提高匹配精度
3<-15% 9<-3 : ‘3<-15%’表示如果clauses不大于3个,要求全匹配,大于三个则允许有15%不匹配

posted @ 2020-10-14 11:35  林宇风  阅读(2170)  评论(0编辑  收藏  举报