es搜索api的使用
match
表示使用全文检索,即先将查询的字符串分词,再去term查询
match_phrase
表示短语匹配,可以用来作为精确匹配,使用slop参数来决定分隔多少个词也可以匹配上
multi_match
这个其实是跟上面两个是包容的关系,match和match_phrase可以说是并列的关系
"query":{
"multi_match":{
"query": "thread",
"fields": [
"content^1.0"
],
"type": "phrase", # 这个可以设置为其他三个类型例如best_fields等,使用其他的类型就是match匹配了
"operator": "OR",
"slop": 0, #表示分隔0个词的距离的匹配,设置这个相当于做精确匹配
"prefix_length": 0,
"max_expansions": 50,
"lenient": true,
"zero_terms_query": "NONE",
"boost": 1.0
}
}
must
表示与查询
should
表示或查询,多个should时注意设置minimum_should_match参数,如果不设置表示所有的或条件都不满足也可以查询数据,一般设置至少满足一个条件,设置为1。
must_not
表示非查询
filter
表示条件过滤