身安不如心安,屋宽不如心宽 。

求助,ES对查询结果进行后置处理

Elasticsearch | 作者 | 发布于2023年12月01日 | 阅读数:3105

如下所示, 希望在查处的结果后, 对结果进行后处理,对tags列表,根据depth进行排序
{
    "keyProperty": "22",
    "name": "测试内容",
    "_class": "com.xxxxxxxx.ElasticSearchContent",
    "contentType": "attractionArea",
    "content": "这是一条测试内容",
    "timestamp": 1701325254191,
    "tags": [
        {
            "path": "33^^35^^36^^38",
            "depth": 4,
            "id": 38,
            "label": "测试42"
        },
        {
            "path": "33^^35^^36^^37^^39",
            "depth": 5,
            "id": 39,
            "label": "测试51"
        },
        {
            "path": "33^^35",
            "depth": 2,
            "id": 35,
            "label": "测试22"
        }
    ]
}
 
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

 
GET /example_index/_search
{
"query": {
"nested": {
"path": "tags",
"query": {
"match_all": {}
}
}
},
"script_fields": {
"sorted_tags": {
"script": {
"lang": "painless",
"source": """
if (!params._source.tags.empty) {
def tags = new ArrayList(params._source.tags);
tags.sort((a, b) -> a.depth.compareTo(b.depth));
return tags;
} else {
return null;
}
"""
}
}
},
"size": 10
}

medcl - 今晚打老虎。

赞同来自:

写个 JS 脚本,通过极限网关,无缝的对查询结果进行改写就行了:
https://infinilabs.com/docs/la ... ript/

要回复问题请先登录注册