ElasticWriter-nested类型实践案例

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: MaxCompute表jsonArray数据使用数据集成ElasticSearch writer插件写入es,嵌套属性

需求描述

MaxCompute表jsonArray数据使用数据集成ElasticSearch writer插件写入es,嵌套属性,如图

image.png


需求实现

1.建源表

-- maxcompute源表  nested测试数据初始化

CREATE TABLE es_nested(id INT ,nested_data STRING );

INSERT OVERWRITE   TABLE es_nested

values (1,

"[{ \"storeId\": 30, \"userId\": 12790, \"bizTime\": 1640351395000 }, { \"storeId\": 156, \"userId\": 12790, \"bizTime\": 1640521467000 }]")

;


2.建目标索引

-- 建目的es索引

PUT /hhh_nested3

{

 "settings": {

   "number_of_shards": 5,

   "number_of_replicas": 1

 },

 "mappings": {

   "hhh_nested3": {

     "properties": {

       "id": {"type": "long"},

       "nested_data":{

         "type":"nested",

         "properties":{

           "storeId":{"type":"long"},

           "userId":{"type":"long"},

           "bizTime":{"type":"long"}

         }

         }

       

     }

   }

 }

}


-- 查看es结构

GET /hhh_nested3/hhh_nested3/_mapping

-- 返回

{

 "hhh_nested3" : {

   "mappings" : {

     "hhh_nested3" : {

       "properties" : {

         "id" : {

           "type" : "long"

         },

         "nested_data" : {

           "type" : "nested",

           "properties" : {

             "bizTime" : {

               "type" : "long"

             },

             "storeId" : {

               "type" : "long"

             },

             "userId" : {

               "type" : "long"

             },

             """{"bizTime":1640351395000,"storeId":30,"userId":12790}""" : {

               "properties" : {

                 "bizTime" : {

                   "type" : "long"

                 },

                 "storeId" : {

                   "type" : "long"

                 },

                 "userId" : {

                   "type" : "long"

                 }

               }

             }

           }

         }

       }

     }

   }

 }

}


3.同步脚本配置,属性类型配置为nested

{
  "name": "nested_data",
  "type": "nested"
}

{

   "type": "job",

   "version": "2.0",

   "steps": [

       {

           "stepType": "odps",

           "parameter": {

               "partition": [],

               "datasource": "odps_first",

               "envType": 0,

               "column": [

                   "id",

                   "nested_data"

               ],

               "table": "es_nested"

           },

           "name": "Reader",

           "category": "reader"

       },

       {

           "stepType": "elasticsearch",

           "parameter": {

               "column": [

                   {

                       "name": "id",

                       "type": "long"

                   },

                   {

                       "name": "nested_data",

                       "type": "nested"

                   }

               ],

               "index": "hhh_nested3",

               "type": "hhh_nested3",

               "splitter": ",",

               "actionType": "index",

               "indexType": "",

               "cleanup": false,

               "datasource": "onaliyun_elasticsearch01",

               "envType": 0,

               "discovery": false,

               "primaryKeyInfo": {

                   "fieldDelimiterOrigin": ",",

                   "column": [

                       "id"

                   ],

                   "type": "specific",

                   "fieldDelimiter": ","

               },

               "dynamic": false,

               "batchSize": 1024

           },

           "name": "Writer",

           "category": "writer"

       }

   ],

   "setting": {

       "errorLimit": {

           "record": ""

       },

       "locale": "zh_CN",

       "speed": {

           "throttle": false,

           "concurrent": 2

       }

   },

   "order": {

       "hops": [

           {

               "from": "Reader",

               "to": "Writer"

           }

       ]

   }

}


4.运行查看结果

GET /hhh_nested3/hhh_nested3/_search

{

 "query": {

   "match": {

     "id": 1

   }

 }

}

返回

{

 "took" : 33,

 "timed_out" : false,

 "_shards" : {

   "total" : 5,

   "successful" : 5,

   "skipped" : 0,

   "failed" : 0

 },

 "hits" : {

   "total" : 1,

   "max_score" : 1.0,

   "hits" : [

     {

       "_index" : "hhh_nested3",

       "_type" : "hhh_nested3",

       "_id" : "1",

       "_score" : 1.0,

       "_source" : {

         "id" : 1,

         "nested_data" : [

           {

             "bizTime" : 1640351395000,

             "storeId" : 30,

             "userId" : 12790

           },

           {

             "bizTime" : 1640521467000,

             "storeId" : 156,

             "userId" : 12790

           }

         ]

       }

     }

   ]

 }

}

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
编译器 C#
C#.Net筑基-类型系统②常见类型 --record是什么类型?
`record`在C#中是一种创建简单、只读数据结构的方式,常用于轻量级数据传输。它本质上是类(默认)或结构体的快捷形式,包含自动生成的属性、`Equals`、`ToString`、解构赋值等方法。记录类型可以继承其他record或接口,但不继承普通类。支持使用`with`语句创建副本。例如,`public record User(string Name, int Age)`会被编译为包含属性、相等比较和`ToString()`等方法的类。记录类型提供了解构赋值和自定义实现,如密封的`sealed`记录,防止子类重写。
|
9月前
|
SQL 测试技术
软件测试|深入理解SQL FULL JOIN:语法、用法及示例解析
软件测试|深入理解SQL FULL JOIN:语法、用法及示例解析
54 0
|
9月前
|
SQL 数据挖掘 测试技术
软件测试|深入理解SQL RIGHT JOIN:语法、用法及示例解析
软件测试|深入理解SQL RIGHT JOIN:语法、用法及示例解析
59 0
|
9月前
|
数据处理
SAP ABAP 里 FILTER 关键字的用法举例
SAP ABAP 里 FILTER 关键字的用法举例
|
10月前
|
SQL 数据采集 测试技术
软件测试|SQL中的null值,该如何理解?
软件测试|SQL中的null值,该如何理解?
251 0
|
11月前
|
存储 JSON 数据建模
Elasticsearch数据建模实战之基于nested object实现博客与评论嵌套关系
Elasticsearch数据建模实战之基于nested object实现博客与评论嵌套关系
|
存储 JSON 数据建模
白话Elasticsearch58-数据建模实战_基于nested object实现博客与评论嵌套关系
白话Elasticsearch58-数据建模实战_基于nested object实现博客与评论嵌套关系
62 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
本篇文章讲解的主要内容是:***有重复数据的数据集用UNION后得到的数据与预期不一致如何解决,当两个表中有重复数据时,UNION的去重功能被忽略,UNION过程中如何识别展示出来、空值与空字符串的关系以及在UNION ALL中的使用、UNION与OR可以互相改写以及使用中的注意事项。***
【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串&UNION与OR的使用注意事项
ts重点学习46-接口与类型别名得异同
ts重点学习46-接口与类型别名得异同
74 0
ts重点学习46-接口与类型别名得异同
ts重点学习91-分布式条件类型
ts重点学习91-分布式条件类型
81 0
ts重点学习91-分布式条件类型