1、query string search
2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search
GET /ecommerce/product/_search
可以查询出当前索引下这个类型的所有数据,
took 本次搜索耗费的时间:毫秒
timed_out:是否超时,这里是没有
—shards 分片所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
hits
total 查询到的是2个document
max_score :搜索时候的相关性匹配分数
qi
其实这种方式主要是采用的是get的url拼接类似!
2、query DSL
DSL 意思是特殊领域的查询语言:Domain Specified Language,
请求体可以是JSON格式的:
查询包含yagao,且按照价格排序
GET /ecommerce/product/_search
{
"query": {
"match": {
"name": "yagao"
}
},"sort": [
{
"price": {
"order": "asc"
}
}
]
}
分页查询商品每一页显示1条数据,显示第2页:
GET /ecommerce/product/_search
{
"query": {
"match_all": {}
},
"from": 1
, "size": 1
}
只查询出来商品的名称和价格就可以:
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
非常适合生产环境。
3、query filter 相当于查询时候进行过滤了
查询包含牙膏的,并且价格大于21的
GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 21 }
}
}
}
}
}
4、full-text search 全文检索
GET /ecommerce/product/_search
{
"query": {
"match": {
"producer": "zhonghua"
}
}
}
5、phrase search 短词搜索
注意:这个搜索时精确的搜索,不会对查询的词进行拆分,类似于不会模糊查询然会返回
但是和全文搜索相反,全文搜索或在把查询的参数进行拆分,再去倒排索引上进行查询!
GET /ecommerce/product/_search
{
"query": {
"match_phrase": {
"producer": "produce"
}
}
}
6、highlight search 高亮搜索
总结下这6中搜索:
第一种url拼接形式的搜索,实战中用的少
第二种搜索:DSL 搜索 相对第一种搜索已经很大的提高,采用JSON格式参数进行搜索
第三种:过滤搜索
第四种:全文搜索,还是很有用的
第五种:短词精确搜索
第6个是高亮,在做检索时候还是很有用的
坚持才是进步的开始!