8
8
9
9
package org .opensearch .plugin .insights .core .exporter ;
10
10
11
- import static org .opensearch .plugin .insights .settings .QueryInsightsSettings .DEFAULT_TOP_QUERIES_EXPORTER_TYPE ;
12
- import static org .opensearch .plugin .insights .settings .QueryInsightsSettings .EXPORTER_TYPE ;
13
-
14
11
import java .io .IOException ;
15
12
import java .time .format .DateTimeFormatter ;
16
- import java .util .HashSet ;
13
+ import java .util .HashMap ;
17
14
import java .util .Locale ;
18
- import java .util .Set ;
15
+ import java .util .Map ;
19
16
import org .apache .logging .log4j .LogManager ;
20
17
import org .apache .logging .log4j .Logger ;
21
18
import org .opensearch .client .Client ;
22
- import org .opensearch .common .settings .Settings ;
23
19
import org .opensearch .plugin .insights .core .metrics .OperationalMetric ;
24
20
import org .opensearch .plugin .insights .core .metrics .OperationalMetricsCounter ;
25
21
@@ -32,7 +28,7 @@ public class QueryInsightsExporterFactory {
32
28
*/
33
29
private final Logger logger = LogManager .getLogger ();
34
30
final private Client client ;
35
- final private Set < QueryInsightsExporter > exporters ;
31
+ final private Map < String , QueryInsightsExporter > exporters ;
36
32
37
33
/**
38
34
* Constructor of QueryInsightsExporterFactory
@@ -41,32 +37,26 @@ public class QueryInsightsExporterFactory {
41
37
*/
42
38
public QueryInsightsExporterFactory (final Client client ) {
43
39
this .client = client ;
44
- this .exporters = new HashSet <>();
40
+ this .exporters = new HashMap <>();
45
41
}
46
42
47
43
/**
48
44
* Validate exporter sink config
49
45
*
50
- * @param settings exporter sink config {@link Settings}
46
+ * @param exporterType exporter sink type
51
47
* @throws IllegalArgumentException if provided exporter sink config settings are invalid
52
48
*/
53
- public void validateExporterConfig (final Settings settings ) throws IllegalArgumentException {
49
+ public void validateExporterType (final String exporterType ) throws IllegalArgumentException {
54
50
// Disable exporter if the EXPORTER_TYPE setting is null
55
- if (settings . get ( EXPORTER_TYPE ) == null ) {
51
+ if (exporterType == null ) {
56
52
return ;
57
53
}
58
- SinkType type ;
59
54
try {
60
- type = SinkType .parse (settings . get ( EXPORTER_TYPE , DEFAULT_TOP_QUERIES_EXPORTER_TYPE ) );
55
+ SinkType .parse (exporterType );
61
56
} catch (IllegalArgumentException e ) {
62
57
OperationalMetricsCounter .getInstance ().incrementCounter (OperationalMetric .INVALID_EXPORTER_TYPE_FAILURES );
63
58
throw new IllegalArgumentException (
64
- String .format (
65
- Locale .ROOT ,
66
- "Invalid exporter type [%s], type should be one of %s" ,
67
- settings .get (EXPORTER_TYPE ),
68
- SinkType .allSinkTypes ()
69
- )
59
+ String .format (Locale .ROOT , "Invalid exporter type [%s], type should be one of %s" , exporterType , SinkType .allSinkTypes ())
70
60
);
71
61
}
72
62
}
@@ -78,10 +68,10 @@ public void validateExporterConfig(final Settings settings) throws IllegalArgume
78
68
* @param indexPattern the index pattern if creating a index exporter
79
69
* @return QueryInsightsExporter the created exporter sink
80
70
*/
81
- public QueryInsightsExporter createExporter (SinkType type , String indexPattern ) {
71
+ public QueryInsightsExporter createExporter (String id , SinkType type , String indexPattern ) {
82
72
if (SinkType .LOCAL_INDEX .equals (type )) {
83
- QueryInsightsExporter exporter = new LocalIndexExporter (client , DateTimeFormatter .ofPattern (indexPattern , Locale .ROOT ));
84
- this .exporters .add ( exporter );
73
+ QueryInsightsExporter exporter = new LocalIndexExporter (client , DateTimeFormatter .ofPattern (indexPattern , Locale .ROOT ), id );
74
+ this .exporters .put ( id , exporter );
85
75
return exporter ;
86
76
}
87
77
return DebugExporter .getInstance ();
@@ -101,6 +91,15 @@ public QueryInsightsExporter updateExporter(QueryInsightsExporter exporter, Stri
101
91
return exporter ;
102
92
}
103
93
94
+ /**
95
+ * Get a exporter by id
96
+ * @param id The id of the exporter
97
+ * @return QueryInsightsReader the Reader
98
+ */
99
+ public QueryInsightsExporter getExporter (String id ) {
100
+ return this .exporters .get (id );
101
+ }
102
+
104
103
/**
105
104
* Close an exporter
106
105
*
@@ -110,7 +109,7 @@ public QueryInsightsExporter updateExporter(QueryInsightsExporter exporter, Stri
110
109
public void closeExporter (QueryInsightsExporter exporter ) throws IOException {
111
110
if (exporter != null ) {
112
111
exporter .close ();
113
- this .exporters .remove (exporter );
112
+ this .exporters .remove (exporter . getId () );
114
113
}
115
114
}
116
115
@@ -119,7 +118,7 @@ public void closeExporter(QueryInsightsExporter exporter) throws IOException {
119
118
*
120
119
*/
121
120
public void closeAllExporters () {
122
- for (QueryInsightsExporter exporter : exporters ) {
121
+ for (QueryInsightsExporter exporter : exporters . values () ) {
123
122
try {
124
123
closeExporter (exporter );
125
124
} catch (IOException e ) {
0 commit comments