需求:搜索标题中包含java的帖子,如果标题中包含hadoop或者elasticsearch就优先搜索出来,同时呢,如果一个帖子包含java hadoop,一个帖子包含java ealsticsearch,包含hadoop的帖子要比elasticsearch优先搜索出来
知识点:搜索条件的权重,boost.可以将某个搜索条件的权重加大,此时如果当匹配这个搜索条件和另一个搜索条件的document,匹配权重更大的搜索条件的document,ralevance score会更高,当然就会优先搜索返回出来.
默认情况下,搜索条件的权重都是一样的,都是1
//写法一:
GET /my_blogs/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"content": "java"
}
}
],
"should": [
{"match": {
"content": {
"query": "hadoop",
"boost": 10
}
}
},
{"match": {
"content": {
"query": "elasticsearch",
"boost": 1
}
}
}
]
}
}
}//写法二:
GET /blogs/_search
{
"query":{
"bool": {
"must": [
{
"match": {
"content": "java"
}
}
],
"should": [
{
"boosting": {
"positive": {
"match": {
"content": "hadoop"
}
},
"negative": {
"match": {
"content": "elasticsearch"
}
},
"negative_boost": 0.2
}
}
]
}
}
}