1.query string search
GET /ecommerce/product/_search
took:耗费了几毫秒
timeout:是否超时
_shards:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个relica shard也可以)
hist.total:查询结果的数量,4个total
max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也越高
hits.hits:包含了匹配搜索的document的详细数据
搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于临时的在命令行使用一些工具,比如curl,快读的发出请求,来检索想要的信息。但是如果查询请求很复杂,是很难去构建的,在生产环境中,几乎很少使用query string search
2.query DSL
DSL: Domain Specified Language 特定领域的语言
http request body :请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search 更加强大
查询所有商品
GET /ecommerce/product/_search
{
“query”:{“match_all”:{}}
}
查询名称包含yagao 的商品,同时按照价格降序排序
GET /ecommerce/product/_search
{
“query”:{
“match”:{
“name”:”yagao”
}
},
“sort”:[
{“price”:”desc”}
]
}
分页查询商品,总共3条商品,假设每页就显示1条商品, 现在显示第二页,所以就查出第二个商品
GET /ecommerce/product/_search
{
“query”:{“match_all”:{}},
“from”:1,
“size”:2
}
指定要查询出来商品的名称和价格
GET /ecommerce/product/_search
{
“query”:{“match_all”:{}},
“_source”:[“name”,”price”]
}
3.query filter(对数据进行过滤)
搜索商品名称包含yagao,而且售价大于25元的商品
GET /ecommerce/product/_search
{
“query”:{
“bool”:{
“must”:[
{“match”:{“name”:”yagao”}}
]
},
“filter”:{
“range”:{
“price”:{
“gt”:25
}
}
}
}
}
4.full-test search(全文检索)
GET /ecommerce/product/_search
{
“query”:{
“match”:{
“product”:”yagao producer”
}
}
}