@@ -40,6 +40,7 @@ import org.opensearch.commons.alerting.model.FindingWithDocs
40
40
import org.opensearch.commons.utils.recreateObject
41
41
import org.opensearch.core.action.ActionListener
42
42
import org.opensearch.core.common.Strings
43
+ import org.opensearch.core.common.io.stream.NamedWriteableRegistry
43
44
import org.opensearch.core.xcontent.NamedXContentRegistry
44
45
import org.opensearch.core.xcontent.XContentParser
45
46
import org.opensearch.core.xcontent.XContentParserUtils
@@ -62,7 +63,8 @@ class TransportGetFindingsSearchAction @Inject constructor(
62
63
clusterService : ClusterService ,
63
64
actionFilters : ActionFilters ,
64
65
val settings : Settings ,
65
- val xContentRegistry : NamedXContentRegistry
66
+ val xContentRegistry : NamedXContentRegistry ,
67
+ val namedWriteableRegistry : NamedWriteableRegistry
66
68
) : HandledTransportAction<ActionRequest, GetFindingsResponse> (
67
69
AlertingActions .GET_FINDINGS_ACTION_NAME ,
68
70
transportService,
@@ -83,11 +85,8 @@ class TransportGetFindingsSearchAction @Inject constructor(
83
85
actionListener : ActionListener <GetFindingsResponse >
84
86
) {
85
87
val getFindingsRequest = request as ? GetFindingsRequest
86
- ? : recreateObject(request) { GetFindingsRequest (it) }
88
+ ? : recreateObject(request, namedWriteableRegistry ) { GetFindingsRequest (it) }
87
89
val tableProp = getFindingsRequest.table
88
- val severity = getFindingsRequest.severity
89
- val detectionType = getFindingsRequest.detectionType
90
- val searchString = tableProp.searchString
91
90
92
91
val sortBuilder = SortBuilders
93
92
.fieldSort(tableProp.sortString)
@@ -104,80 +103,17 @@ class TransportGetFindingsSearchAction @Inject constructor(
104
103
.seqNoAndPrimaryTerm(true )
105
104
.version(true )
106
105
107
- val queryBuilder = QueryBuilders .boolQuery()
106
+ val queryBuilder = getFindingsRequest.boolQueryBuilder ? : QueryBuilders .boolQuery()
108
107
109
108
if (! getFindingsRequest.findingId.isNullOrBlank()) {
110
109
queryBuilder.filter(QueryBuilders .termQuery(" _id" , getFindingsRequest.findingId))
111
110
}
112
-
113
- if (! getFindingsRequest.findingIds.isNullOrEmpty()) {
114
- queryBuilder.filter(QueryBuilders .termsQuery(" id" , getFindingsRequest.findingIds))
115
- }
116
-
117
111
if (getFindingsRequest.monitorId != null ) {
118
112
queryBuilder.filter(QueryBuilders .termQuery(" monitor_id" , getFindingsRequest.monitorId))
119
113
} else if (getFindingsRequest.monitorIds.isNullOrEmpty() == false ) {
120
114
queryBuilder.filter(QueryBuilders .termsQuery(" monitor_id" , getFindingsRequest.monitorIds))
121
115
}
122
116
123
- if (getFindingsRequest.startTime != null && getFindingsRequest.endTime != null ) {
124
- val startTime = getFindingsRequest.startTime!! .toEpochMilli()
125
- val endTime = getFindingsRequest.endTime!! .toEpochMilli()
126
- val timeRangeQuery = QueryBuilders .rangeQuery(" timestamp" )
127
- .from(startTime) // Greater than or equal to start time
128
- .to(endTime) // Less than or equal to end time
129
- queryBuilder.filter(timeRangeQuery)
130
- }
131
-
132
- if (! detectionType.isNullOrBlank()) {
133
- val nestedQueryBuilder = QueryBuilders .nestedQuery(
134
- " queries" ,
135
- when {
136
- detectionType.equals(" threat" , ignoreCase = true ) -> {
137
- QueryBuilders .boolQuery().filter(
138
- QueryBuilders .prefixQuery(" queries.id" , " threat_intel_" )
139
- )
140
- }
141
- else -> {
142
- QueryBuilders .boolQuery().mustNot(
143
- QueryBuilders .prefixQuery(" queries.id" , " threat_intel_" )
144
- )
145
- }
146
- },
147
- ScoreMode .None
148
- )
149
-
150
- // Add the nestedQueryBuilder to the main queryBuilder
151
- queryBuilder.must(nestedQueryBuilder)
152
- }
153
-
154
- if (! searchString.isNullOrBlank()) {
155
- queryBuilder
156
- .should(QueryBuilders .matchQuery(" index" , searchString))
157
- .should(
158
- QueryBuilders .nestedQuery(
159
- " queries" ,
160
- QueryBuilders .matchQuery(" queries.tags" , searchString),
161
- ScoreMode .None
162
- )
163
- )
164
- .should(QueryBuilders .regexpQuery(" monitor_name" , searchString + " .*" ))
165
- .minimumShouldMatch(1 )
166
- }
167
-
168
- if (! severity.isNullOrBlank()) {
169
- queryBuilder
170
- .must(
171
- QueryBuilders .nestedQuery(
172
- " queries" ,
173
- QueryBuilders .boolQuery().should(
174
- QueryBuilders .matchQuery(" queries.tags" , severity)
175
- ),
176
- ScoreMode .None
177
- )
178
- )
179
- }
180
-
181
117
if (! tableProp.searchString.isNullOrBlank()) {
182
118
queryBuilder
183
119
.should(
0 commit comments