24
24
import java .util .Set ;
25
25
import java .util .stream .Collectors ;
26
26
import java .util .concurrent .TimeUnit ;
27
+
28
+ import io .confluent .connect .elasticsearch .validator .ScriptValidator ;
27
29
import org .apache .kafka .common .config .AbstractConfig ;
28
30
import org .apache .kafka .common .config .ConfigDef ;
29
31
import org .apache .kafka .common .config .ConfigException ;
@@ -277,6 +279,24 @@ public class ElasticsearchSinkConnectorConfig extends AbstractConfig {
277
279
);
278
280
private static final String WRITE_METHOD_DISPLAY = "Write Method" ;
279
281
private static final String WRITE_METHOD_DEFAULT = WriteMethod .INSERT .name ();
282
+
283
+ public static final String UPSERT_SCRIPT_CONFIG = "upsert.script" ;
284
+
285
+ private static final String UPSERT_SCRIPT_DOC = "Script used for"
286
+ + " upserting data to Elasticsearch. This script allows for"
287
+ + " customizable behavior upon upserting a document. Please refer to"
288
+ + " Elasticsearch scripted upsert documentation" ;
289
+
290
+ private static final String UPSERT_SCRIPT_DISPLAY = "Upsert Script" ;
291
+
292
+ public static final String PAYLOAD_AS_PARAMS_CONFIG = "payload.as.params" ;
293
+
294
+ private static final String PAYLOAD_AS_PARAMS_DOC = "Defines Kafka payload will be injected"
295
+ + " into upsert.script script component as params object" ;
296
+
297
+ private static final String PAYLOAD_AS_PARAMS_DISPLAY = "Payload as Params" ;
298
+
299
+
280
300
public static final String LOG_SENSITIVE_DATA_CONFIG = "log.sensitive.data" ;
281
301
private static final String LOG_SENSITIVE_DATA_DISPLAY = "Log Sensitive data" ;
282
302
private static final String LOG_SENSITIVE_DATA_DOC = "If true, logs sensitive data "
@@ -408,7 +428,8 @@ public enum SecurityProtocol {
408
428
409
429
public enum WriteMethod {
410
430
INSERT ,
411
- UPSERT
431
+ UPSERT ,
432
+ SCRIPTED_UPSERT
412
433
}
413
434
414
435
protected static ConfigDef baseConfigDef () {
@@ -622,8 +643,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
622
643
DATA_CONVERSION_GROUP ,
623
644
++order ,
624
645
Width .SHORT ,
625
- IGNORE_KEY_DISPLAY
626
- ) .define (
646
+ IGNORE_KEY_DISPLAY )
647
+ .define (
627
648
IGNORE_SCHEMA_CONFIG ,
628
649
Type .BOOLEAN ,
629
650
IGNORE_SCHEMA_DEFAULT ,
@@ -632,8 +653,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
632
653
DATA_CONVERSION_GROUP ,
633
654
++order ,
634
655
Width .SHORT ,
635
- IGNORE_SCHEMA_DISPLAY
636
- ) .define (
656
+ IGNORE_SCHEMA_DISPLAY )
657
+ .define (
637
658
COMPACT_MAP_ENTRIES_CONFIG ,
638
659
Type .BOOLEAN ,
639
660
COMPACT_MAP_ENTRIES_DEFAULT ,
@@ -642,8 +663,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
642
663
DATA_CONVERSION_GROUP ,
643
664
++order ,
644
665
Width .SHORT ,
645
- COMPACT_MAP_ENTRIES_DISPLAY
646
- ) .define (
666
+ COMPACT_MAP_ENTRIES_DISPLAY )
667
+ .define (
647
668
IGNORE_KEY_TOPICS_CONFIG ,
648
669
Type .LIST ,
649
670
IGNORE_KEY_TOPICS_DEFAULT ,
@@ -652,8 +673,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
652
673
DATA_CONVERSION_GROUP ,
653
674
++order ,
654
675
Width .LONG ,
655
- IGNORE_KEY_TOPICS_DISPLAY
656
- ) .define (
676
+ IGNORE_KEY_TOPICS_DISPLAY )
677
+ .define (
657
678
IGNORE_SCHEMA_TOPICS_CONFIG ,
658
679
Type .LIST ,
659
680
IGNORE_SCHEMA_TOPICS_DEFAULT ,
@@ -662,8 +683,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
662
683
DATA_CONVERSION_GROUP ,
663
684
++order ,
664
685
Width .LONG ,
665
- IGNORE_SCHEMA_TOPICS_DISPLAY
666
- ) .define (
686
+ IGNORE_SCHEMA_TOPICS_DISPLAY )
687
+ .define (
667
688
DROP_INVALID_MESSAGE_CONFIG ,
668
689
Type .BOOLEAN ,
669
690
DROP_INVALID_MESSAGE_DEFAULT ,
@@ -672,8 +693,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
672
693
DATA_CONVERSION_GROUP ,
673
694
++order ,
674
695
Width .LONG ,
675
- DROP_INVALID_MESSAGE_DISPLAY
676
- ) .define (
696
+ DROP_INVALID_MESSAGE_DISPLAY )
697
+ .define (
677
698
BEHAVIOR_ON_NULL_VALUES_CONFIG ,
678
699
Type .STRING ,
679
700
BEHAVIOR_ON_NULL_VALUES_DEFAULT .name (),
@@ -684,8 +705,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
684
705
++order ,
685
706
Width .SHORT ,
686
707
BEHAVIOR_ON_NULL_VALUES_DISPLAY ,
687
- new EnumRecommender <>(BehaviorOnNullValues .class )
688
- ) .define (
708
+ new EnumRecommender <>(BehaviorOnNullValues .class ))
709
+ .define (
689
710
BEHAVIOR_ON_MALFORMED_DOCS_CONFIG ,
690
711
Type .STRING ,
691
712
BEHAVIOR_ON_MALFORMED_DOCS_DEFAULT .name (),
@@ -696,8 +717,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
696
717
++order ,
697
718
Width .SHORT ,
698
719
BEHAVIOR_ON_MALFORMED_DOCS_DISPLAY ,
699
- new EnumRecommender <>(BehaviorOnMalformedDoc .class )
700
- ) .define (
720
+ new EnumRecommender <>(BehaviorOnMalformedDoc .class ))
721
+ .define (
701
722
EXTERNAL_VERSION_HEADER_CONFIG ,
702
723
Type .STRING ,
703
724
EXTERNAL_VERSION_HEADER_DEFAULT ,
@@ -706,8 +727,8 @@ private static void addConversionConfigs(ConfigDef configDef) {
706
727
DATA_CONVERSION_GROUP ,
707
728
++order ,
708
729
Width .SHORT ,
709
- EXTERNAL_VERSION_HEADER_DISPLAY
710
- ) .define (
730
+ EXTERNAL_VERSION_HEADER_DISPLAY )
731
+ .define (
711
732
WRITE_METHOD_CONFIG ,
712
733
Type .STRING ,
713
734
WRITE_METHOD_DEFAULT ,
@@ -718,8 +739,30 @@ private static void addConversionConfigs(ConfigDef configDef) {
718
739
++order ,
719
740
Width .SHORT ,
720
741
WRITE_METHOD_DISPLAY ,
721
- new EnumRecommender <>(WriteMethod .class )
722
- );
742
+ new EnumRecommender <>(WriteMethod .class ))
743
+ .define (
744
+ UPSERT_SCRIPT_CONFIG ,
745
+ Type .STRING ,
746
+ null ,
747
+ new ScriptValidator (),
748
+ Importance .LOW ,
749
+ UPSERT_SCRIPT_DOC ,
750
+ DATA_CONVERSION_GROUP ,
751
+ ++order ,
752
+ Width .SHORT ,
753
+ UPSERT_SCRIPT_DISPLAY ,
754
+ new ScriptValidator ())
755
+ .define (
756
+ PAYLOAD_AS_PARAMS_CONFIG ,
757
+ Type .BOOLEAN ,
758
+ false ,
759
+ Importance .LOW ,
760
+ PAYLOAD_AS_PARAMS_DOC ,
761
+ DATA_CONVERSION_GROUP ,
762
+ ++order ,
763
+ Width .SHORT ,
764
+ PAYLOAD_AS_PARAMS_DISPLAY );
765
+ ;
723
766
}
724
767
725
768
private static void addProxyConfigs (ConfigDef configDef ) {
@@ -1078,6 +1121,14 @@ public WriteMethod writeMethod() {
1078
1121
return WriteMethod .valueOf (getString (WRITE_METHOD_CONFIG ).toUpperCase ());
1079
1122
}
1080
1123
1124
+ public String getScript () {
1125
+ return getString (UPSERT_SCRIPT_CONFIG );
1126
+ }
1127
+
1128
+ public Boolean getIsPayloadAsParams () {
1129
+ return getBoolean (PAYLOAD_AS_PARAMS_CONFIG );
1130
+ }
1131
+
1081
1132
private static class DataStreamDatasetValidator implements Validator {
1082
1133
1083
1134
@ Override
0 commit comments