MST

星途 面试题库

面试题:ElasticSearch API中多字段联合输出格式化技巧

在一个ElasticSearch索引中有三个字段:姓名(name)、年龄(age)和地址(address)。要求通过API查询时,将这三个字段以'姓名:[name],年龄:[age]岁,地址:[address]'这样的可读格式输出,并且按照年龄降序排列。请写出完整的ElasticSearch查询语句,并解释关键部分的作用。
11.9万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

ElasticSearch查询语句

{
    "query": {
        "match_all": {}
    },
    "sort": [
        {
            "age": {
                "order": "desc"
            }
        }
    ],
    "script_fields": {
        "formatted_info": {
            "script": {
                "source": "params._source.name + ':[' + params._source.name + '],年龄:[' + params._source.age + ']岁,地址:[' + params._source.address + ']'",
                "lang": "painless"
            }
        }
    }
}

关键部分作用解释

  1. query部分
    • match_all表示匹配索引中的所有文档。这里使用match_all是因为题目没有对文档筛选条件进行限制,需要获取所有文档。
  2. sort部分
    • sort用于对查询结果进行排序。
    • age指定按照age字段进行排序。
    • order: "desc"表示按年龄降序排列。
  3. script_fields部分
    • script_fields用于通过脚本生成新的字段。
    • formatted_info是新生成字段的名称。
    • script中的source定义了生成新字段值的脚本逻辑。这里使用Painless脚本语言,将nameageaddress字段按照指定格式拼接起来。params._source用于访问文档的原始字段值。
    • lang: "painless"指定使用Painless脚本语言。