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