天天看点

ElasticSearch基础入门(三)高级查询、过滤、排序一、高级查询二、过滤(filter)三、排序

ElasticSearch基础入门(三)高级查询、过滤、排序

  • 一、高级查询
    • 1. 布尔查询(bool)
    • 2. 范围查询(range)
    • 3. 模糊查询(fuzzy)
  • 二、过滤(filter)
  • 三、排序
    • 1. 单字段排序
    • 2. 多字段排序

一、高级查询

1. 布尔查询(bool)

bool

把各种其它查询通过

must

(与)、

must_not

(非)、

should

(或)的方式进行组合。

GET /yoshop/_search
{
    "query":{
        "bool":{
        	"must":     { "match": { "title": "大米" }},
        	"must_not": { "match": { "title":  "电视" }},
        	"should":   { "match": { "title": "手机" }}
        }
    }
}
           

2. 范围查询(range)

range

查询找出那些落在指定区间内的数字或者时间。

GET /heima/_search
{
    "query":{
        "range": {
            "price": {
                "gte":  1000.0,
                "lt":   2800.00
            }
    	}
    }
}
           

3. 模糊查询(fuzzy)

fuzzy

查询是

term

查询的模糊等价。它允许用户搜索词条与实际词条的拼写出现偏差,但是偏差的编辑距离不得超过2。

GET /youshop/_search
{
  "query": {
    "fuzzy": {
      "title": "applo"
    }
  }
}
           

上面的查询,也能查询到apple手机

我们可以通过

fuzziness

来指定允许的编辑距离。

GET /youshop/_search
{
  "query": {
    "fuzzy": {
        "title": {
            "value":"appla",
            "fuzziness":1
        }
    }
  }
}
           

二、过滤(filter)

filter

方式是在查询结果中进行过滤的,不会影响评分。

GET /youshop/_search
{
    "query":{
        "bool":{
        	"must":{ "match": { "title": "小米手机" }},
        	"filter":{
                "range":{"price":{"gt":3000,"lt":3800.00}}
        	}
        }
    }
}
           

注意:

filter

中还可以再次进行

bool

组合条件过滤。

三、排序

1. 单字段排序

sort

可以让我们按照不同的字段进行排序,并且通过

order

指定排序的方式。

GET /youshop/_search
{
  "query": {
    "match": {
      "title": "小米手机"
    }
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}
           

2. 多字段排序

假定我们想要结合使用

price

_id

进行查询,并且匹配的结果首先按照价格排序,然后按照相id排序。

GET /goods/_search
{
    "query":{
        "bool":{
        	"must":{ "match": { "title": "小米手机" }},
        	"filter":{
                "range":{"price":{"gt":2000,"lt":3000}}
        	}
        }
    },
    "sort": [
      { "price": { "order": "desc" }},
      { "_id": { "order": "desc" }}
    ]
}
           

继续阅读