1 term就是严格意义上的匹配,不进行分词,类比与”=“的作用,匹配到的内容完全一致
GET /news/_search
{
"from": 0,
"size": 10,
"query": {
"term": {
"headline": "传承太极文化"
}
}
}
2 match就会分词,比如查询下面的字符串”传承太极文化“,就会查”传承“、”太极“,”文化“,包含一个或多个的内容就会被查出来
GET /news/_search
{
"from": 0,
"size": 10,
"query": {
"match": {
"headline" : {
"query" : "传承太极文化"
}
}
}
}
3 再来看看multi_match,当需要匹配两个及以上字段时,表示任何一个字段包含检索的内容,就返回结果,没有顺序,设计评分的相关性问题
GET /news/_search
{
"from": 0,
"size": 10,
"query": {
"multi_match": {
"query" : "传承太极文化",
"fields" : ["headline", "summary"]
}
}
}
4 如果想要同时包含”传承“、”太极“,”文化“的内容需要使用match_phrase精确匹配,想要忽略一个或多个的匹配,就需要使用到slop
GET /news/_search
{
"from": 0,
"size": 10,
"query": {
"match_phrase": {
"headline" : {
"query" : "传承太极文化",
"slop" : 1
}
}
}