es 多字段分词查询优化
es多字段查询时,优化字段查询权重.比如:有2个字段name
和teacher
看下面查询
{
"query": {
"bool": {
"should": [
{"term":{"name":"文化"}},
{"term":{"teacher":"文化"}}
]
}
}
}
这样去查的话,name
和teacher
权重相同,但是如果想优先排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%不匹配