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代码实现

相关推荐
CV_J17 小时前
安装kibana
java·elasticsearch·spring cloud·docker·容器
-大头.1 天前
GIT教程系列(共3篇)---------第二篇:Git高级协作与团队实战完全指南
大数据·git·elasticsearch
北京地铁1号线1 天前
2.2 向量数据库
数据库·elasticsearch·milvus·faiss·向量数据库·hnsw
a努力。1 天前
宇树Java面试被问:数据库死锁检测和自动回滚机制
java·数据库·elasticsearch·面试·职场和发展·rpc·jenkins
-大头.1 天前
GIT教程系列(共3篇)---------第一篇:Git入门与核心概念完全指南
大数据·git·elasticsearch
爱敲代码的憨仔1 天前
Elasticsearch入门
大数据·elasticsearch·搜索引擎
小马爱打代码1 天前
实时搜索:SpringCloud + Elasticsearch + Redis + Kafka
redis·elasticsearch·spring cloud
G皮T1 天前
【Elasticsearch】审计日志(一):General settings
大数据·elasticsearch·搜索引擎·全文检索·kibana·审计·审计日志
晚霞的不甘1 天前
Flutter for OpenHarmony 实战:[开发环境搭建与项目编译指南]
git·flutter·react native·react.js·elasticsearch·visual studio code
G皮T1 天前
【Elasticsearch】审计日志(二):Compliance settings(合规性审计设置)
大数据·elasticsearch·搜索引擎·全文检索·kibana·审计·审计日志