Hi,
你好,是这样的,从kafka消费的话,如果表定义了 a,b,c三个字段,如果kafka的数据少了一个a,那么在flink sql里面,读出来的就是 
a=null,写入ES的话,就会有个a=null


比如从ES查询数据的话
期望 没有a的时候,查询结果类似 {b=1,c=2}
如果写了a=null进去,查询结果类似 {a=null,b=1,c=2}
这样结果就和期望的不一样了,所以期望是Flink SQL insert的时候 ,不写数值为null字段

在 2021-12-31 10:15:41,"Caizhi Weng" <[email protected]> 写道:
>Hi!
>
>我不太熟悉 es,如果某一个字段不写的话,是会写入一个默认值吗?如果是的话,可以使用 coalesce 函数。coalesce(a, b, c,
>...) 会返回第一个非 null 的值,因此只要把默认值放在最后一个,如果前面都是 null 就会写默认值。
>
>RS <[email protected]> 于2021年12月30日周四 17:06写道:
>
>> 有10~20个字段,这样一个个写,手都敲断了,还有其他的方式吗?或者如何开发代码适配到SQL?
>>
>>
>>
>>
>>
>> 在 2021-12-30 11:36:21,"Xuyang" <[email protected]> 写道:
>> >可以使用case when试一下
>> >在 2021-12-29 16:40:39,"RS" <[email protected]> 写道:
>> >>Hi,
>> >>使用Flink SQL消费Kafka写ES,有时候有的字段不存在,不存在的不想写入ES,这种情况怎么处理呢?
>> >>
>> >>
>> >>比如:源数据有3个字段,a,b,c
>> >>insert into table2
>> >>select
>> >>a,b,c
>> >>from table1
>> >>当b=null的时候,只希望写入a和c
>> >>当c=null的时候,只希望写入a和b
>> >>
>>

回复