架构师成长记_第八周_16_dsl搜索-过滤器 post_filter, 排序 sort, 高亮 highlight

本文详细介绍了Elasticsearch DSL中的搜索技巧,包括使用过滤器进行高效数据筛选、针对特定字段进行排序以及如何实现高亮显示等功能,帮助读者掌握实用的搜索优化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. dsl搜索-过滤器 post_filter

对于range属性有4个关键字:

gt: 大于
lt: 小于
gte:大于等于
lte:小于等于

在这里插入图片描述

{
    "query": {
       "match": {
           "desc":"慕课网游戏"
        }
        
    },
    "post_filter": {
        "range" : {
            "money":{
                "gt": 60 ,
                "lt": 1000
            }
        }
    },
    "_source": [
        "id",
        "desc",
        "money",
        "sex"
    ]
}

PS:

  1. query 是对于ES库中的数据进行检索, 查询的
  2. post_filter是不会去进行检索和计算相关的分数的, 是针对于数据检索出来以后才做的一个过滤操作, 这样的话, 它的性能就会比较高.

2. dsl搜索-排序 sort

在这里插入图片描述

{
    "query": {
       "match": {
           "desc":"慕课网游戏"
        }
        
    },
    "sort": [
        {
            "age":"asc"
        },
        {
            "money":"asc"
        }
    ]
   
}

PS:

text 类型是无法进行排序的. keyword可以进行排序, 原因是, text 会进行倒排索引, 分词处理, 在这之后是很难实现排序功能的, 而keyword类型, 不会进行分词和倒排索引, 故可以用于排序.

解决 text 排序问题: (通过附属的keyword字段实现)

  1. 创建一个索引 shop2.
    在这里插入图片描述
  2. 设置字段类型.
    在这里插入图片描述
{
    "properties": {
        "id": {
            "type": "long"
        },
        "nickname": {
            "type": "text",
            "analyzer": "ik_max_word",
            "fields": {
                "keyword": {
                    "type": "keyword"
                }
            }
        }
    }
}
  1. 查看设置的附属keyword
    在这里插入图片描述
  2. 添加数据
    在这里插入图片描述
{
    "id": 1002,
    "nickname":"漂亮的小哥哥"
}

在这里插入图片描述
5. 实现 text 排序

在这里插入图片描述

{
    "sort":[
        {
            "nickname.keyword": "desc"
        }
    ]
}

3. dsl搜索- 高亮显示 highlight

在这里插入图片描述

{
    "query":{
        "match": {
            "desc": "慕课网"
        }
    },
    "highlight":{
        "pre_tags":["<span>"],
        "post_tags":["</span>"],
        "fields":{
            "desc":{}
        }
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_大木_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值