php 使用 ElasticSearch 高级查询、过滤、排序

一、高级查询

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

918eb2075a67416087e73734d343c70b.jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Data ElasticSearch高级查询是指在使用Spring Data ElasticSearch框架进行查询时,使用一系列高级查询功能来满足特定需求的操作。这些高级查询功能包括基本查询、自定义查询、分页查询排序等。 在Spring Data ElasticSearch中,为了执行高级查询,我们可以使用ElasticsearchRepository接口提供的search方法。该方法需要一个QueryBuilder参数来构建查询条件。QueryBuilder可以使用QueryBuilders对象提供的方法来创建各种类型的查询,如词条查询、匹配查询等。 例如,如果我们想要执行一个词条查询,可以使用QueryBuilders的matchQuery方法来创建一个MatchQueryBuilder对象,并指定查询的字段和关键词。然后,将该查询对象作为参数传递给search方法,即可执行查询并获取结果。 除了基本查询之外,Spring Data ElasticSearch还提供了其他高级查询功能,如自定义查询、分页查询排序。自定义查询可以根据具体需求使用不同的查询条件和操作符来构建复杂的查询语句。分页查询可以通过设置分页参数来获取指定范围内的查询结果。排序可以根据指定字段对查询结果进行排序。 总之,Data ElasticSearch高级查询是指使用Spring Data ElasticSearch框架提供的一系列高级查询功能来满足特定需求的操作,包括基本查询、自定义查询、分页查询排序等。通过使用QueryBuilders对象创建QueryBuilder参数,我们可以构建出各种类型的查询条件,并通过search方法执行查询获取结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Spring Data ElasticSearch高级查询,聚合](https://blog.csdn.net/qq_41879343/article/details/107452444)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值