高级查询
查看所有文档
查看匹配的文档
、向ES服务器发送GET 请求:localhost:9200/shopping/_search
{
"query":{
"match":{
"title":"西游记"
}
}
}
查看全部的文档
{
"query":{
"match_all":{
}
}
}
分页查询
{
"query":{
"match_all":{
}
},
"from":0,
"size":1
}
如果不想匹配source中的所有字段可以在请求体中添加条件
{
"query":{
"match_all":{
}
},
"_source":["title"]
}
可以在添加"_source"后在中括号中添加想要显示的字段。
根据条件进行排序
{
"query":{
"match_all":{
}
},
"sort":{
"price":"desc",根据price字段进行降序排序
}
}
组合查询
{
"query":{
"bool":{
"must":[
{
"match":{
"title":"西游记"
}
},
{
"match":{
"price":33.00
}
}
]
}
}
}
"must"表示且的意思,也就是匹配的数据需要title为西游记,price为33.00
"should"表示或的意思,任一个匹配到就可以。
范围查询
使用range字段查询出在指定范围的数据。
{
"query":{
"range":{
"price":{
"gte":23.00
}
}
}
}
全文检索
{
"query":{
"match":{
"title":"甜西",会对这个词进行差分,分别进行匹配
}
}
}
完全匹配
{
"query":{
"match_phrase":{
"title":"西甜"
}
}
}
使用match_phrase进行完全匹配
模糊匹配
{
"query":{
"match":{
"title":"西游记"
}
},
"highlight":{
"fields":{
"title":{}
}
}
}
聚合查询
分组显示
{
"aggs":{
"price_group":{
"terms":{
"field":"price"
}
}
}
}
显示平均值
{
"aggs":{
"price_avg":{
"avg":{
"field":"price"
}
}
},
"size":0
}
映射关系
{
"properties":{
"name":{
"type":"text",
"index":true
},
"sex":{
"type":"keyword",
"index":true
},
"tel":{
"type":"keyword",
"index":false
}
}
}
首先创建索引,使用PUT 请求,
查看映射使用GET 请求
查询
因为name字段设置的映射为text,可以使用分词器,所以查询小时可以查出数据
因为sex字段使用的是keyword,因此查询男不能查出来,需要查询男的
因为tel字段设置的不能被索引,因此查询tel字段无法查出数据
|