Elasticsearch 组合查询
1、bool查询
must,should,must_not
minimum_should_match: 表示一个文档至少匹配多少个短语才算是匹配成功
disable_coord: 启用和禁用一个文档中所包含所有查询关键词的分数得分计算,默认是false
加入你想查询 apple jobs mobile
无Coordination效果
含有apple的文档-> 分值:1.5
含有apple jobs的文档-> 分值:3.0
含有apple jobs mobile的文档->分值:4.5
有Coordination效果
含有apple的文档->分值:1.5 * 1/3 = 0.5
含有apple jobs的文档-> 分值:3.0*2/3 = 2.0
含有apple jobs的文档->分值: 4.5*3/3 = 4.5
2、boosting查询
将两个查询封装在一起,然后能降低其中一个查询结果返回的分值
positive部分:查询返回的查询结果分值不变
negative部分:查询的结果分值会降低
negative_boost部分:设置negative中要降低的分值
boosting查询的优点:
优点:里面的两个查询都会有结果返回,其中一个分值就是你设置的分值
注意:如果没有bool的must_not的话,那降低的那部分就没有结果返回
3、constant_score 查询
优点:可以让一个查询得到一个恒定的分值。
#constant_score查询
GET /library/books/_search
{
"query": {
"term": {
"title": "elasticsearch"
}
}
}
GET /library/books/_search
{
"query": {
"constant_score": {
"query": {
"term": {
"title": "elasticsearch"
}
}
}
}
}
4、indices查询
优点:可以在多个索引上进行查询
no_match_query:查询其他索引里的数据
#indices查询
GET /_search
{
"query": {
"indices": {
"indices": ["library"],
"query": {
"term": {
"title": "elasticsearch"
}
},
"no_match_query": {
"term": {
"price": 10
}
}
}
}
}