match_all query:返回所有文档,文档得分都是1
GET books/_search
{
"query":{
"match_all":{}
}
}
term query:用来查找指定字段中包含给定单词的文档,term查询不被解析,只有查询词和文档词精确匹配才会被搜索到,应用场景为查询人名、地名等需要精确匹配的需求
GET books/_search
{
"query":{
"term":{"title":"思想"}
}
}
GET books/_search
{
“from":0,
"size":100,
"query":{
"term":{"title":"思想"}
}
}
GET bookx/_search
{
"min_score":0.6,
"query":{
"term":"变成"
}
}
}
natch query:会解析查询语句,对查询语句进行分词,分词后查询语句中任何一个词项被匹配,文档就会被搜索到。如果想查询匹配所有关键词的文档,使用and操作符连接。
GET books/_search
{
"query":{
"match":{
"title":{
"query":"java 变成",
"operator":"or"
}
}
}
}
match_phrase query:首先会把查询内容分词,分词器可以自定义,且满足以下两个条件才会被检索到:
match_phrase_prefix query:和match_phrase类似,只不过match_phrase_prefix支持最后一个term前缀匹配
GET test/_search
{
"query":{
"match_phrase_prefix":{
"foo":"hello w"
}
}
}
multi_match query;match的升级,用于搜索多个字段
GET books/_search
{
"query":{
"multi_match":{
"query":"java 编程",
"fields":{"title","description"}
}
}
}
- multi_match:支持对搜索字典的名称使用通配符,
GET books/_search
{
"query":{
"multi_match":{
"query":"java 编程“,
"fields":{"title","*_name"}
}
}
}
- multi_match:支持使用指数符指定搜索字段的权重,
GET books/_search
{
"query":{
"multi_match":{
"query":"java 编程”,
"fields":{"title^3","description"}
}
}
}
common_terms query:是一种在不牺牲性能的情况下替代停用词提高搜索准确率和召回率的方案(考虑停用词的有意义性)
- common_terms query:将query分词后的此项分成重要词项(低频词)和不重要的词项(高频词)
- 查询的时候:
- 搜索和重要词项匹配的文档,对文档评分
- 搜索对评分影响较小的高频词项,但是不计算文档评分
- 如果一个查询只包含高频词,通过and连接符执行一个单独的查询,即搜索所有的词项。
- 通过cutoff_frequency设置阈值
- 自适应特定领域的停用词
GET books/_search
{
"query":{
"common":{
"query":"nelly the elephant as a cartoon",
"cutoff_frequency":0.001,
"low_freq_operator":"and"
}
}
}
query_string query
simple_query_string