想找到所有title字段以cri开始的文档
{
"query":{
"prefix":{
"title":"cri"
}
}
}
用户向搜索框中输入单词crme,而不是crime,运行模糊查询的最简单形式
{
"query":{
"fuzzy":{
"title":"crme"
}
}
}
通配符查询允许我们在查询值中使用*和?等通配符。此外,通配符查询跟词条查询在内容方面非常类似。可以发送一下查询,来匹配所有包含cr?me词条的文档,这里?表示任意字符:
{
"query":{
"wildcard":{
"title":"cr?me"
}
}
}
范围查新,要找到year字段从1700到1900的所有图书,可以运行以下查询:
{
"query":{
"range":{
"year":{
"gte":1700,
"lte":1900
}
}
}
}
gte:范围查询将匹配字段值大于或等于此参数值的文档。
gt:范围查询将匹配字段值大于此参数值的文档。
lte:范围查询将匹配字段值小于或等于此参数值的文档。
lt:范围查询将匹配字段值小于此参数值的文档。
正则表达式查询示例如下所示:
{
"query":{
"regexp":{
"title":{
"value":"cr.m[ae]",
"boost":10
}
}
}
}
假设我们想要找到所有这样的文档:在title字段中含有crime词条,并且year字段可以在也可以不在1900~2000的范围里,在otitle字段中不可以包含nothing词条。用布尔查询的话,类似于下面的代码:
{
"query":{
"bool":{
"must":{
"term":{
"title":"crime"
}
},
"should":{
"range":{
"year":{
"from":1900,
"to":2000
}
}
},
"must_not":{
"term":{
"otitle":"nothing"
}
}
}
}
}
在title字段搜索Catch-22并向其添加过滤器.它返回给定title的所有文档,但结果缩小到仅在1961年出版的书
{
"query":{
"match":{
"title":"Catch-22"
}
},
"post_filter":{
"term":{
"year":1961
}
}
}