Skip to content

Commit ae1eae9

Browse files
committed
Fix OpenSearch 3.3.0+ API compatibility
Add missing fields across multiple APIs for enhanced query failure tracking and system monitoring introduced in OpenSearch 3.3.0+: Nodes Stats API: - Add NeuralSearch breaker for neural search circuit breaker support - Add QueryFailed and StartreeQueryFailed for query failure tracking - Add SystemGeneratedProcessors and SystemGeneratedFactories to search pipeline for system component tracking Indices Stats API: - Add QueryFailed and StartreeQueryFailed search failure tracking fields Cat APIs (nodes, shards, indices): - Add SearchQueryFailed and SearchStartreeQueryFailed fields - Fix JSON field naming inconsistencies in cat indices API where OpenSearch uses mixed formats (pri.search.startree.query_* vs pri.search.startree_query_failed) Cluster State API: - Add IngestionStatus field to ClusterStateMetaDataIndex for tracking index ingestion status in cluster metadata These fields provide enhanced observability for query failures, neural search circuit breaker monitoring, search pipeline system components, and index ingestion status tracking. Signed-off-by: Sean Chittenden <sean.chittenden@crowdstrike.com>
1 parent 5e0fbf0 commit ae1eae9

7 files changed

Lines changed: 22 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
2121
- Fix cat APIs compatibility with OpenSearch 3.2.0+ by adding indexing timestamp and startree query fields
2222
- Fix floating point precision loss in nodes stats concurrent_avg_slice_count field by changing from float32 to float64
2323
- Fix security plugin health API compatibility with OpenSearch 3.2.0+ by adding settings field
24+
- Fix nodes stats API compatibility with OpenSearch 3.3.0+ by adding neural_search breaker, query_failed and startree_query_failed search fields, and search pipeline system_generated fields
25+
- Fix indices stats API compatibility with OpenSearch 3.3.0+ by adding query_failed and startree_query_failed search fields
26+
- Fix cat APIs compatibility with OpenSearch 3.3.0+ by adding query_failed and startree_query_failed search fields
27+
- Fix cluster state API compatibility with OpenSearch 3.3.0+ by adding ingestion_status field to index metadata
2428

2529
### Security
2630

opensearchapi/api_cat-indices.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,8 @@ type CatIndexResp struct {
148148
PrimarySearchQueryTime *string `json:"pri.search.query_time"`
149149
SearchQueryTotal *int `json:"search.query_total,string"`
150150
PrimarySearchQueryTotal *int `json:"pri.search.query_total,string"`
151+
SearchQueryFailed *int `json:"search.query_failed,string"` // Available in OpenSearch 3.3.0+
152+
PrimarySearchQueryFailed *int `json:"pri.search.query_failed,string"` // Available in OpenSearch 3.3.0+
151153
SearchConcurrentQueryCurrent *int `json:"search.concurrent_query_current,string"`
152154
PrimarySearchConcurrentQueryCurrent *int `json:"pri.search.concurrent_query_current,string"`
153155
SearchConcurrentQueryTime *string `json:"search.concurrent_query_time"`
@@ -162,6 +164,8 @@ type CatIndexResp struct {
162164
PrimaryStartreeQueryTime *string `json:"pri.search.startree.query_time"` // Available in OpenSearch 3.2.0+
163165
SearchStartreeQueryTotal *string `json:"search.startree_query_total"` // Available in OpenSearch 3.2.0+
164166
PrimaryStartreeQueryTotal *string `json:"pri.search.startree.query_total"` // Available in OpenSearch 3.2.0+
167+
SearchStartreeQueryFailed *int `json:"search.startree_query_failed,string"` // Available in OpenSearch 3.3.0+
168+
PrimaryStartreeQueryFailed *int `json:"pri.search.startree_query_failed,string"` // Available in OpenSearch 3.3.0+
165169
SearchScrollCurrent *int `json:"search.scroll_current,string"`
166170
PrimarySearchScrollCurrent *int `json:"pri.search.scroll_current,string"`
167171
SearchScrollTime *string `json:"search.scroll_time"`

opensearchapi/api_cat-nodes.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,15 @@ type CatNodesItemResp struct {
118118
SearchQueryCurrent *int `json:"search.query_current,string"`
119119
SearchQueryTime *string `json:"search.query_time"`
120120
SearchQueryTotal *int `json:"search.query_total,string"`
121+
SearchQueryFailed *int `json:"search.query_failed,string"` // Available in OpenSearch 3.3.0+
121122
SearchConcurrentQueryCurrent *int `json:"search.concurrent_query_current,string"`
122123
SearchConcurrentQueryTime *string `json:"search.concurrent_query_time"`
123124
SearchConcurrentQueryTotal *int `json:"search.concurrent_query_total,string"`
124125
SearchConcurrentAvgSliceCount *string `json:"search.concurrent_avg_slice_count"`
125126
SearchStartreeQueryCurrent *int `json:"search.startree_query_current,string"` // Available in OpenSearch 3.2.0+
126127
SearchStartreeQueryTime *string `json:"search.startree_query_time"` // Available in OpenSearch 3.2.0+
127128
SearchStartreeQueryTotal *int `json:"search.startree_query_total,string"` // Available in OpenSearch 3.2.0+
129+
SearchStartreeQueryFailed *int `json:"search.startree_query_failed,string"` // Available in OpenSearch 3.3.0+
128130
SearchScrollCurrent *int `json:"search.scroll_current,string"`
129131
SearchScrollTime *string `json:"search.scroll_time"`
130132
SearchScrollTotal *int `json:"search.scroll_total,string"`

opensearchapi/api_cat-shards.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,15 @@ type CatShardResp struct {
102102
SearchQueryCurrent *int `json:"search.query_current,string"`
103103
SearchQueryTime *string `json:"search.query_time"`
104104
SearchQueryTotal *int `json:"search.query_total,string"`
105+
SearchQueryFailed *int `json:"search.query_failed,string"` // Available in OpenSearch 3.3.0+
105106
SearchConcurrentQueryCurrent *int `json:"search.concurrent_query_current,string"`
106107
SearchConcurrentQueryTime *string `json:"search.concurrent_query_time"`
107108
SearchConcurrentQueryTotal *int `json:"search.concurrent_query_total,string"`
108109
SearchConcurrentAvgSliceCount *string `json:"search.concurrent_avg_slice_count"`
109110
SearchStartreeQueryCurrent *int `json:"search.startree_query_current,string"` // Available in OpenSearch 3.2.0+
110111
SearchStartreeQueryTime *string `json:"search.startree_query_time"` // Available in OpenSearch 3.2.0+
111112
SearchStartreeQueryTotal *int `json:"search.startree_query_total,string"` // Available in OpenSearch 3.2.0+
113+
SearchStartreeQueryFailed *int `json:"search.startree_query_failed,string"` // Available in OpenSearch 3.3.0+
112114
SearchScrollCurrent *int `json:"search.scroll_current,string"`
113115
SearchScrollTime *string `json:"search.scroll_time"`
114116
SearchScrollTotal *int `json:"search.scroll_total,string"`

opensearchapi/api_cluster-state.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,8 @@ type ClusterStateMetaDataIndex struct {
174174
MetConditions map[string]string `json:"met_conditions"`
175175
Time int `json:"time"`
176176
} `json:"rollover_info"`
177-
System bool `json:"system"`
177+
System bool `json:"system"`
178+
IngestionStatus json.RawMessage `json:"ingestion_status"` // Available in OpenSearch 3.3.0+
178179
}
179180

180181
// ClusterStateMetaDataStream is a sub type of ClusterStateMetaData containing information about a data stream

opensearchapi/api_indices-stats.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,15 @@ type IndicesStatsSearch struct {
115115
QueryTotal int `json:"query_total"`
116116
QueryTimeInMillis int `json:"query_time_in_millis"`
117117
QueryCurrent int `json:"query_current"`
118+
QueryFailed int `json:"query_failed"` // Available in OpenSearch 3.3.0+
118119
ConcurrentQueryTotal int `json:"concurrent_query_total"`
119120
ConcurrentQueryTimeInMillis int `json:"concurrent_query_time_in_millis"`
120121
ConcurrentQueryCurrent int `json:"concurrent_query_current"`
121122
ConcurrentAVGSliceCount float32 `json:"concurrent_avg_slice_count"`
122123
StartreeQueryTotal int `json:"startree_query_total"` // Available in OpenSearch 3.2.0+
123124
StartreeQueryTimeInMillis int `json:"startree_query_time_in_millis"` // Available in OpenSearch 3.2.0+
124125
StartreeQueryCurrent int `json:"startree_query_current"` // Available in OpenSearch 3.2.0+
126+
StartreeQueryFailed int `json:"startree_query_failed"` // Available in OpenSearch 3.3.0+
125127
FetchTotal int `json:"fetch_total"`
126128
FetchTimeInMillis int `json:"fetch_time_in_millis"`
127129
FetchCurrent int `json:"fetch_current"`

opensearchapi/api_nodes-stats.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,15 @@ type NodesStatsIndices struct {
154154
QueryTotal int `json:"query_total"`
155155
QueryTimeInMillis int `json:"query_time_in_millis"`
156156
QueryCurrent int `json:"query_current"`
157+
QueryFailed int `json:"query_failed"` // Available in OpenSearch 3.3.0+
157158
ConcurrentQueryTotal int `json:"concurrent_query_total"`
158159
ConcurrentQueryTimeInMillis int `json:"concurrent_query_time_in_millis"`
159160
ConcurrentQueryCurrent int `json:"concurrent_query_current"`
160161
ConcurrentAVGSliceCount float64 `json:"concurrent_avg_slice_count"`
161162
StartreeQueryTotal int `json:"startree_query_total"` // Available in OpenSearch 3.2.0+
162163
StartreeQueryTimeInMillis int `json:"startree_query_time_in_millis"` // Available in OpenSearch 3.2.0+
163164
StartreeQueryCurrent int `json:"startree_query_current"` // Available in OpenSearch 3.2.0+
165+
StartreeQueryFailed int `json:"startree_query_failed"` // Available in OpenSearch 3.3.0+
164166
FetchTotal int `json:"fetch_total"`
165167
FetchTimeInMillis int `json:"fetch_time_in_millis"`
166168
FetchCurrent int `json:"fetch_current"`
@@ -494,6 +496,7 @@ type NodesStatsBreakers struct {
494496
Fielddata NodesStatsBreaker `json:"fielddata"`
495497
InFlightRequests NodesStatsBreaker `json:"in_flight_requests"`
496498
Parent NodesStatsBreaker `json:"parent"`
499+
NeuralSearch NodesStatsBreaker `json:"neural_search"` // Available in OpenSearch 3.3.0+
497500
}
498501

499502
// NodesStatsScript is a sub type of NodesStats representing script information of the node
@@ -679,7 +682,9 @@ type NodesStatsSearchPipeline struct {
679682
Current int `json:"current"`
680683
Failed int `json:"failed"`
681684
} `json:"total_response"`
682-
Pipelines json.RawMessage `json:"pipelines"`
685+
Pipelines json.RawMessage `json:"pipelines"`
686+
SystemGeneratedProcessors json.RawMessage `json:"system_generated_processors"` // Available in OpenSearch 3.3.0+
687+
SystemGeneratedFactories json.RawMessage `json:"system_generated_factories"` // Available in OpenSearch 3.3.0+
683688
}
684689

685690
// NodesStatsTaskCancellation is a sub type of NodesStats containing stats about canceled tasks

0 commit comments

Comments
 (0)