您的位置:首页 > 其它

005,elasticsearch多种搜索方式--语法初窥

2017-10-07 00:00 537 查看
elasticsearch多种搜索方式--语法初窥

elasticsearch六种搜索方式:

1、query string search
2、query DSL
3、query filter
4、full-text search
5、phrase search
6、highlight search

1、query string search

(1)搜索全部用户:

GET /index/type/_search

如下图,所得信息:



参数解释:

took:耗费了几毫秒

_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

2、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"]
}

3、query filter

搜索商品名称包含yagao,而且售价大于25元的商品

GET /ecommerce/product/_search
{
"query" : {
"bool" : {
"must" : {
"match" : {
"name" : "yagao"
}
},
"filter" : {
"range" : {
"price" : { "gt" : 25 }
}
}
}
}
}

---------------------------------------------------------------------------------------------------------------------------------

4、full-text search(全文检索)

GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "yagao producer"
}
}
}

5、phrase search(短语搜索)

跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回
phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

GET /ecommerce/product/_search
{
"query" : {
"match_phrase" : {
"producer" : "yagao producer"
}
}
}

6、highlight search(高亮搜索结果)

GET /ecommerce/product/_search
{
"query" : {
"match" : {
"producer" : "producer"
}
},
"highlight": {
"fields" : {
"producer" : {}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息