如何使ElasticSearch仅产生字段的前几个单词?

我正在使用ElasticSearch查询一组相当长的文档。每个文档(除其他事项外)都有标题,URL和正文。

向用户展示结果时,我只想展示每个文档的“摘要”(以及标题和URL)。但是,只返回整个主体以在客户端进行修剪似乎很浪费。

A,我没有专门的“抽象”字段或类似内容。因此,我想知道:是否有一种方法可以使ElasticSearch在每次匹配中仅产生“ body”字段的开头(例如前200个字)?我查看了source filtering(我已经在查询中使用了它),但这似乎只是为响应选择/取消选择了各个字段。我想寻找一种转换返回数据的方法。

nyrhd 回答:如何使ElasticSearch仅产生字段的前几个单词?

看来Script Fields是解决此问题的一种方法。这是一个示例查询,它为每个文档获取titleuri和脚本化(!)abstract字段。 abstract由实际content字段的前200个字母组成:

{
    "query": {
        "match": {
            "title": "Scripting"
        },},"_source": ["title","uri"],"script_fields": {
        "abstract": {
            "script": {
                "lang": "painless","source": "params['_source'].content.substring(0,200)"
            }
        }
    }
}
本文链接:https://www.f2er.com/3167886.html

大家都在问