开发者社区 > 大数据与机器学习 > 开源大数据平台 E-MapReduce > 正文

sr on es嵌套的mapping,怎么取到最里层的值?

请教下,sr on es,像这种嵌套的mapping,怎么取到最里层的值。如何建表合适。我搜的样例,都不带多级mapping的 { ""mappings"": { ""_doc"": { ""properties"": { ""created_at"": { ""type"": ""long"" }, ""resource"": { ""properties"": { ""cats"": { ""properties"": { ""name"": { ""type"": ""keyword"" }, ""sub_cats"": { ""properties"": { ""name"": { ""type"": ""keyword"" }, ""sub_cats"": { ""properties"": { ""name"": { ""type"": ""keyword"" } } } } } } }, ""ids"": { ""type"": ""keyword"" }, ""tags"": { ""type"": ""keyword"" } } } ""updated_at"": { ""type"": ""long"" } } } } }

展开
收起
wenti 2023-01-08 17:26:33 327 0
1 条回答
写回答
取消 提交回答
  • 在 Elasticsearch 中,如果使用嵌套映射,可以按以下步骤获取最里层的值:

    1. 获取嵌套字段的路径:

    使用 .(句点)符号连接嵌套字段的名称,以获取其路径。例如,以下路径获取 address.street 字段的值:

    address.street

    1. 使用脚本或嵌套查询:

    脚本:

    使用脚本可以动态访问嵌套字段。以下脚本获取 address.street 字段的值:

    doc['address.street'].value
    嵌套查询:

    嵌套查询允许您查询嵌套字段。以下嵌套查询获取 address.street 字段的值:

    {
    "query": {
    "nested": {
    "path": "address",
    "query": {
    "match": {
    "address.street": "Main Street"
    }
    }
    }
    }
    }

    1. 使用聚合函数:

    对于聚合查询,可以使用聚合函数来提取嵌套字段的值。例如,以下查询使用 max 聚合函数获取 address.street 字段的最大值:

    {
    "aggs": {
    "max_street": {
    "max": {
    "field": "address.street"
    }
    }
    }
    }
    示例:

    假设您有以下 JSON 文档:

    {
    "name": "John Doe",
    "address": {
    "street": "Main Street",
    "city": "Anytown"
    }
    }
    要获取 address.street 字段的值,可以使用以下查询:

    脚本:

    {
    "script": {
    "source": "doc['address.street'].value"
    }
    }
    嵌套查询:

    {
    "query": {
    "nested": {
    "path": "address",
    "query": {
    "match": {
    "address.street": "Main Street"
    }
    }
    }
    }
    }
    聚合函数:

    {
    "aggs": {
    "max_street": {
    "max": {
    "field": "address.street"
    }
    }
    }
    }
    这三个查询都将返回以下结果:

    "Main Street"

    2024-02-26 16:54:17
    赞同 展开评论 打赏

阿里云EMR是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎,计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK平台。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载