ES使用script进行复杂排序

es数据字段,关注_source内容,为自定义的es表字段内容

java 复制代码
{
    "clerk_id": 3150036230,
    "clerk_follow_status": 60,
    "create_time": 1729156110000,
    "channel": 1,
    "mid": 1538020071,
    "binlog_timestamp": null,
    "clue_tag": 0,
    "is_sync": 1,
    "vuid": 199603942960332807,
    "idempotence": "8101929dc442442b847a46fa09fa1c11",
    "sync_operation_time": 1733448887759,
    "follow_time": 1729230615000,
    "update_time": 1729230615000,
    "follow_count": 1,
    "id": 12428,
    "spu_id": 8797,
    "org_code": "MI0101",
    "wecom_friend": [
        3150036230
    ],
    "latest_purchase_time": 1656489614
}

要实现的排序逻辑是:如果wecom_friend字段包含指定id则优先排序

第一步 ,百度参考:Elasticsearch-script 脚本排序-CSDN博客

当前参考是字段==比较,那我们的是数组,则直接使用contains方法尝试

java 复制代码
{
    "_script": {
        "script": {
            "source": "if(params['_source']['wecom_friend'].contains('3150036230')){1}else{0}",
            "lang": "painless"
        },
        "type": "number",
        "order": "desc"
    }
}

执行可以看到,并没有匹配到

第二步,当前字段为long类型,所以是不是要去掉引号

执行报错

提示错误,需要改成long类型数字去匹配

第三步,修改后,执行成功

最终查询代码

java 复制代码
{
    "_script": {
        "script": {
            "source": "if(params['_source']['wecom_friend'].contains(3150036230L)){1}else{0}",
            "lang": "painless"
        },
        "type": "number",
        "order": "desc"
    }
}

Java代码实现

相关推荐
Elastic 中国社区官方博客24 分钟前
使用 Remote Write 将 Prometheus 指标发送到 Elasticsearch
大数据·运维·elasticsearch·搜索引擎·全文检索·prometheus
Elasticsearch2 小时前
自动化可靠性:自愈型企业的架构
elasticsearch
SiYuanFeng3 小时前
新手学Git:以一个小游戏项目为例,完成初始化、提交、查看历史与恢复版本
大数据·git·elasticsearch
骑蜗牛散步5 小时前
Docker下安装ElasticSearch
大数据·elasticsearch·jenkins
Elasticsearch5 小时前
Elastic Security、Observability 和 Search 现在在你的 AI 工具中提供交互式 UI
elasticsearch
zhougl9966 小时前
Git 命令速查手册
大数据·git·elasticsearch
Caspian Wren6 小时前
通过Canal、Canal adapter将MySQL数据同步到ES
mysql·elasticsearch·adb
JackSparrow4146 小时前
使用Elasticsearch代替数据库like以加快查询的各种技术方案+实现细节
大数据·clickhouse·elk·elasticsearch·搜索引擎·postgresql·全文检索
LDG_AGI6 小时前
【搜索引擎】Elasticsearch(五):prefix前缀匹配方法大全(包含search_as_you_type等6种解法)
人工智能·深度学习·算法·elasticsearch·搜索引擎
趣味科技v6 小时前
当人工智能遇上科研:AI4S开启未来科技新篇章
人工智能·科技·搜索引擎·百度