@@ -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 , transportService, actionFilters, ::GetFindingsRequest
68
70
),
@@ -80,11 +82,8 @@ class TransportGetFindingsSearchAction @Inject constructor(
80
82
actionListener : ActionListener <GetFindingsResponse >
81
83
) {
82
84
val getFindingsRequest = request as ? GetFindingsRequest
83
- ? : recreateObject(request) { GetFindingsRequest (it) }
85
+ ? : recreateObject(request, namedWriteableRegistry ) { GetFindingsRequest (it) }
84
86
val tableProp = getFindingsRequest.table
85
- val severity = getFindingsRequest.severity
86
- val detectionType = getFindingsRequest.detectionType
87
- val searchString = tableProp.searchString
88
87
89
88
val sortBuilder = SortBuilders
90
89
.fieldSort(tableProp.sortString)
@@ -101,79 +100,16 @@ class TransportGetFindingsSearchAction @Inject constructor(
101
100
.seqNoAndPrimaryTerm(true )
102
101
.version(true )
103
102
104
- val queryBuilder = QueryBuilders .boolQuery()
103
+ val queryBuilder = getFindingsRequest.boolQueryBuilder ? : QueryBuilders .boolQuery()
105
104
106
105
if (! getFindingsRequest.findingId.isNullOrBlank())
107
106
queryBuilder.filter(QueryBuilders .termQuery(" _id" , getFindingsRequest.findingId))
108
-
109
- if (! getFindingsRequest.findingIds.isNullOrEmpty()) {
110
- queryBuilder.filter(QueryBuilders .termsQuery(" id" , getFindingsRequest.findingIds))
111
- }
112
-
113
107
if (getFindingsRequest.monitorId != null ) {
114
108
queryBuilder.filter(QueryBuilders .termQuery(" monitor_id" , getFindingsRequest.monitorId))
115
109
} else if (getFindingsRequest.monitorIds.isNullOrEmpty() == false ) {
116
110
queryBuilder.filter(QueryBuilders .termsQuery(" monitor_id" , getFindingsRequest.monitorIds))
117
111
}
118
112
119
- if (getFindingsRequest.startTime != null && getFindingsRequest.endTime != null ) {
120
- val startTime = getFindingsRequest.startTime!! .toEpochMilli()
121
- val endTime = getFindingsRequest.endTime!! .toEpochMilli()
122
- val timeRangeQuery = QueryBuilders .rangeQuery(" timestamp" )
123
- .from(startTime) // Greater than or equal to start time
124
- .to(endTime) // Less than or equal to end time
125
- queryBuilder.filter(timeRangeQuery)
126
- }
127
-
128
- if (! detectionType.isNullOrBlank()) {
129
- val nestedQueryBuilder = QueryBuilders .nestedQuery(
130
- " queries" ,
131
- when {
132
- detectionType.equals(" threat" , ignoreCase = true ) -> {
133
- QueryBuilders .boolQuery().filter(
134
- QueryBuilders .prefixQuery(" queries.id" , " threat_intel_" )
135
- )
136
- }
137
- else -> {
138
- QueryBuilders .boolQuery().mustNot(
139
- QueryBuilders .prefixQuery(" queries.id" , " threat_intel_" )
140
- )
141
- }
142
- },
143
- ScoreMode .None
144
- )
145
-
146
- // Add the nestedQueryBuilder to the main queryBuilder
147
- queryBuilder.must(nestedQueryBuilder)
148
- }
149
-
150
- if (! searchString.isNullOrBlank()) {
151
- queryBuilder
152
- .should(QueryBuilders .matchQuery(" index" , searchString))
153
- .should(
154
- QueryBuilders .nestedQuery(
155
- " queries" ,
156
- QueryBuilders .matchQuery(" queries.tags" , searchString),
157
- ScoreMode .None
158
- )
159
- )
160
- .should(QueryBuilders .regexpQuery(" monitor_name" , searchString + " .*" ))
161
- .minimumShouldMatch(1 )
162
- }
163
-
164
- if (! severity.isNullOrBlank()) {
165
- queryBuilder
166
- .must(
167
- QueryBuilders .nestedQuery(
168
- " queries" ,
169
- QueryBuilders .boolQuery().should(
170
- QueryBuilders .matchQuery(" queries.tags" , severity)
171
- ),
172
- ScoreMode .None
173
- )
174
- )
175
- }
176
-
177
113
if (! tableProp.searchString.isNullOrBlank()) {
178
114
queryBuilder
179
115
.should(
0 commit comments