elasticsearch多种搜索方式--语法初窥json
elasticsearch六种搜索方式:elasticsearch
一、query string search
二、query DSL
三、query filter
四、full-text search
五、phrase search
六、highlight searchspa
一、query string search排序
(1)搜索所有用户:索引
GET /index/type/_searchci
以下图,所得信息:string
参数解释: it
took:耗费了几毫秒ast
_shards:数据拆成了5个分片,因此对于搜索请求,会打到全部的primary shard(或者是它的某个replica shard也能够)搜索
hits.total:查询结果的数量,N个document
hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
hits.hits:包含了匹配搜索的document的详细数据
(2)搜索用户名中包含“帅”的商品,并且按照年龄降序排序:
GET /index/type/_search?q=name:帅&sort=age:desc
二、query DSL
DSL:Domain Specified Language,特定领域的语言
http request body:请求体,能够用json的格式来构建查询语法,比较方便,能够构建各类复杂的语法
(1)查询全部的用户
GET /index/type/_search
{
"query": { "match_all": {} }
}
(2)查询名称包含shuai的用户,同时按照年龄降序排序
GET /index/type/_search
{
"query" : {
"match" : {
"name" : "shuai"
}
},
"sort": [
{ "age": "desc" }
]
}
(3)分页查询用户,假设每页就显示1条记录,如今显示第2页
GET /index/type/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
(4)指定要查询出来用户的名称和年龄就能够
GET /index/type/_search
{
"query": { "match_all": {} },
"_source": ["name", "age"]
}
(5),分页查询商品,总共3条商品,假设每页就显示1条商品,如今显示第2页,因此就查出来第2个商品
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"from": 1,
"size": 1
}
(6),指定要查询出来商品的名称和价格就能够
GET /ecommerce/product/_search
{
"query": { "match_all": {} },
"_source": ["name", "price"]
}
三、query filter
搜索商品名称包含yagao,并且售价大于25元的商品
GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 25 }
}
}
}
}
}
---------------------------------------------------------------------------------------------------------------------------------
四、full-text search(全文检索)
GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao producer"
}
}
}
五、phrase search(短语搜索)
跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就能够做为结果返回
phrase search,要求输入的搜索串,必须在指定的字段文本中,彻底包含如出一辙的,才能够算匹配,才能做为结果返回
GET /ecommerce/product/_search
{
"query" : {
"match_phrase" : {
"producer" : "yagao producer"
}
}
}
六、highlight search(高亮搜索结果)
GET /ecommerce/product/_search { "query" : { "match" : { "producer" : "producer" } }, "highlight": { "fields" : { "producer" : {} } } }