mattermost-community-enterp.../vendor/github.com/opensearch-project/opensearch-go/v4/opensearchapi/api_indices-stats.go
Claude ec1f89217a Merge: Complete Mattermost Server with Community Enterprise
Full Mattermost server source with integrated Community Enterprise features.
Includes vendor directory for offline/air-gapped builds.

Structure:
- enterprise-impl/: Enterprise feature implementations
- enterprise-community/: Init files that register implementations
- enterprise/: Bridge imports (community_imports.go)
- vendor/: All dependencies for offline builds

Build (online):
  go build ./cmd/mattermost

Build (offline/air-gapped):
  go build -mod=vendor ./cmd/mattermost

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 23:59:07 +09:00

318 lines
13 KiB
Go

// SPDX-License-Identifier: Apache-2.0
//
// The OpenSearch Contributors require contributions made to
// this file be licensed under the Apache-2.0 license or a
// compatible open source license.
package opensearchapi
import (
"encoding/json"
"net/http"
"strings"
"github.com/opensearch-project/opensearch-go/v4"
)
// IndicesStatsReq represents possible options for the index shrink request
type IndicesStatsReq struct {
Indices []string
Metrics []string
Header http.Header
Params IndicesStatsParams
}
// GetRequest returns the *http.Request that gets executed by the client
func (r IndicesStatsReq) GetRequest() (*http.Request, error) {
indices := strings.Join(r.Indices, ",")
metrics := strings.Join(r.Metrics, ",")
var path strings.Builder
path.Grow(9 + len(indices) + len(metrics))
if len(indices) > 0 {
path.WriteString("/")
path.WriteString(indices)
}
path.WriteString("/_stats")
if len(metrics) > 0 {
path.WriteString("/")
path.WriteString(metrics)
}
return opensearch.BuildRequest(
"GET",
path.String(),
nil,
r.Params.get(),
r.Header,
)
}
// IndicesStatsResp represents the returned struct of the index shrink response
type IndicesStatsResp struct {
Shards IndicesStatsShards `json:"_shards"`
All IndicesStatsAll `json:"_all"`
Indices IndicesStatsIndices `json:"indices"`
response *opensearch.Response
}
// Inspect returns the Inspect type containing the raw *opensearch.Reponse
func (r IndicesStatsResp) Inspect() Inspect {
return Inspect{Response: r.response}
}
// IndicesStatsShards is a sub type of IndicesStatsResp containing information about how many shards got requested
type IndicesStatsShards struct {
Total int `json:"total"`
Successful int `json:"successful"`
Failed int `json:"failed"`
Failures []FailuresShard `json:"failures"`
}
// IndicesStatsDocs is a sub type of IndicesStatsInfo containing stats about the index documents
type IndicesStatsDocs struct {
Count int `json:"count"`
Deleted int `json:"deleted"`
}
// IndicesStatsStore is a sub type of IndicesStatsInfo containing stats about index storage
type IndicesStatsStore struct {
SizeInBytes int64 `json:"size_in_bytes"`
ReservedInBytes int `json:"reserved_in_bytes"`
}
// IndicesStatsIndexing is a sub type of IndicesStatsInfo containing stats about document indexing
type IndicesStatsIndexing struct {
IndexTotal int `json:"index_total"`
IndexTimeInMillis int `json:"index_time_in_millis"`
IndexCurrent int `json:"index_current"`
IndexFailed int `json:"index_failed"`
DeleteTotal int `json:"delete_total"`
DeleteTimeInMillis int `json:"delete_time_in_millis"`
DeleteCurrent int `json:"delete_current"`
NoopUpdateTotal int `json:"noop_update_total"`
IsThrottled bool `json:"is_throttled"`
ThrottleTimeInMillis int `json:"throttle_time_in_millis"`
DocStatus map[string]int `json:"doc_status"`
}
// IndicesStatsGet is a sub type of IndicesStatsInfo containing stats about index get
type IndicesStatsGet struct {
Total int `json:"total"`
TimeInMillis int `json:"time_in_millis"`
ExistsTotal int `json:"exists_total"`
ExistsTimeInMillis int `json:"exists_time_in_millis"`
MissingTotal int `json:"missing_total"`
MissingTimeInMillis int `json:"missing_time_in_millis"`
Current int `json:"current"`
GetTime string `json:"getTime"`
}
// IndicesStatsSearch is a sub type of IndicesStatsInfo containing stats about index search
type IndicesStatsSearch struct {
OpenContexts int `json:"open_contexts"`
QueryTotal int `json:"query_total"`
QueryTimeInMillis int `json:"query_time_in_millis"`
QueryCurrent int `json:"query_current"`
ConcurrentQueryTotal int `json:"concurrent_query_total"`
ConcurrentQueryTimeInMillis int `json:"concurrent_query_time_in_millis"`
ConcurrentQueryCurrent int `json:"concurrent_query_current"`
ConcurrentAVGSliceCount float32 `json:"concurrent_avg_slice_count"`
FetchTotal int `json:"fetch_total"`
FetchTimeInMillis int `json:"fetch_time_in_millis"`
FetchCurrent int `json:"fetch_current"`
ScrollTotal int `json:"scroll_total"`
ScrollTimeInMillis int `json:"scroll_time_in_millis"`
ScrollCurrent int `json:"scroll_current"`
PointInTimeTotal int `json:"point_in_time_total"`
PointInTimeTimeInMillis int `json:"point_in_time_time_in_millis"`
PointInTimeCurrent int `json:"point_in_time_current"`
SuggestTotal int `json:"suggest_total"`
SuggestTimeInMillis int `json:"suggest_time_in_millis"`
SuggestCurrent int `json:"suggest_current"`
IdleReactivateCountTotal int `json:"search_idle_reactivate_count_total"`
}
// IndicesStatsMerges is a sub type of IndicesStatsInfo containing stats about index merges
type IndicesStatsMerges struct {
Current int `json:"current"`
CurrentDocs int `json:"current_docs"`
CurrentSizeInBytes int `json:"current_size_in_bytes"`
Total int `json:"total"`
TotalTimeInMillis int `json:"total_time_in_millis"`
TotalDocs int `json:"total_docs"`
TotalSizeInBytes int64 `json:"total_size_in_bytes"`
TotalStoppedTimeInMillis int `json:"total_stopped_time_in_millis"`
TotalThrottledTimeInMillis int `json:"total_throttled_time_in_millis"`
TotalAutoThrottleInBytes int `json:"total_auto_throttle_in_bytes"`
UnreferencedFileCleanupsPerformed int `json:"unreferenced_file_cleanups_performed"`
}
// IndicesStatsRefresh is a sub type of IndicesStatsInfo containing stats about index refresh
type IndicesStatsRefresh struct {
Total int `json:"total"`
TotalTimeInMillis int `json:"total_time_in_millis"`
ExternalTotal int `json:"external_total"`
ExternalTotalTimeInMillis int `json:"external_total_time_in_millis"`
Listeners int `json:"listeners"`
}
// IndicesStatsFlush is a sub type of IndicesStatsInfo containing stats about index flush
type IndicesStatsFlush struct {
Total int `json:"total"`
Periodic int `json:"periodic"`
TotalTimeInMillis int `json:"total_time_in_millis"`
}
// IndicesStatsWarmer is a sub type of IndicesStatsInfo containing stats about index warmer
type IndicesStatsWarmer struct {
Current int `json:"current"`
Total int `json:"total"`
TotalTimeInMillis int `json:"total_time_in_millis"`
}
// IndicesStatsQueryCache is a sub type of IndicesStatsInfo containing stats about index query cache
type IndicesStatsQueryCache struct {
MemorySizeInBytes int `json:"memory_size_in_bytes"`
TotalCount int `json:"total_count"`
HitCount int `json:"hit_count"`
MissCount int `json:"miss_count"`
CacheSize int `json:"cache_size"`
CacheCount int `json:"cache_count"`
Evictions int `json:"evictions"`
}
// IndicesStatsFielddata is a sub type of IndicesStatsInfo containing stats about index fielddata
type IndicesStatsFielddata struct {
MemorySizeInBytes int `json:"memory_size_in_bytes"`
Evictions int `json:"evictions"`
}
// IndicesStatsCompletion is a sub type of IndicesStatsInfo containing stats about index completion
type IndicesStatsCompletion struct {
SizeInBytes int `json:"size_in_bytes"`
}
// IndicesStatsSegments is a sub type of IndicesStatsInfo containing stats about index segments
type IndicesStatsSegments struct {
Count int `json:"count"`
MemoryInBytes int `json:"memory_in_bytes"`
TermsMemoryInBytes int `json:"terms_memory_in_bytes"`
StoredFieldsMemoryInBytes int `json:"stored_fields_memory_in_bytes"`
TermVectorsMemoryInBytes int `json:"term_vectors_memory_in_bytes"`
NormsMemoryInBytes int `json:"norms_memory_in_bytes"`
PointsMemoryInBytes int `json:"points_memory_in_bytes"`
DocValuesMemoryInBytes int `json:"doc_values_memory_in_bytes"`
IndexWriterMemoryInBytes int `json:"index_writer_memory_in_bytes"`
VersionMapMemoryInBytes int `json:"version_map_memory_in_bytes"`
FixedBitSetMemoryInBytes int `json:"fixed_bit_set_memory_in_bytes"`
MaxUnsafeAutoIDTimestamp int64 `json:"max_unsafe_auto_id_timestamp"`
RemoteStore struct {
Upload struct {
TotalUploadSize struct {
StartedBytes int `json:"started_bytes"`
SucceededBytes int `json:"succeeded_bytes"`
FailedBytes int `json:"failed_bytes"`
} `json:"total_upload_size"`
RefreshSizeLag struct {
TotalBytes int `json:"total_bytes"`
MaxBytes int `json:"max_bytes"`
} `json:"refresh_size_lag"`
MaxRefreshTimeLagInMillis int `json:"max_refresh_time_lag_in_millis"`
TotalTimeSpentInMillis int `json:"total_time_spent_in_millis"`
Pressure struct {
TotalRejections int `json:"total_rejections"`
} `json:"pressure"`
} `json:"upload"`
Download struct {
TotalDownloadSize struct {
StartedBytes int `json:"started_bytes"`
SucceededBytes int `json:"succeeded_bytes"`
FailedBytes int `json:"failed_bytes"`
} `json:"total_download_size"`
TotalTimeSpentInMillis int `json:"total_time_spent_in_millis"`
} `json:"download"`
} `json:"remote_store"`
SegmentReplication struct {
// Type is json.RawMessage due to difference in opensearch versions from string to int
MaxBytesBehind json.RawMessage `json:"max_bytes_behind"`
TotalBytesBehind json.RawMessage `json:"total_bytes_behind"`
MaxReplicationLag json.RawMessage `json:"max_replication_lag"`
} `json:"segment_replication"`
FileSizes json.RawMessage `json:"file_sizes"`
}
// IndicesStatsTranslog is a sub type of IndicesStatsInfo containing stats about index translog
type IndicesStatsTranslog struct {
Operations int `json:"operations"`
SizeInBytes int `json:"size_in_bytes"`
UncommittedOperations int `json:"uncommitted_operations"`
UncommittedSizeInBytes int `json:"uncommitted_size_in_bytes"`
EarliestLastModifiedAge int `json:"earliest_last_modified_age"`
RemoteStore struct {
Upload struct {
TotalUploads struct {
Started int `json:"started"`
Failed int `json:"failed"`
Succeeded int `json:"succeeded"`
} `json:"total_uploads"`
TotalUploadSize struct {
StartedBytes int `json:"started_bytes"`
FailedBytes int `json:"failed_bytes"`
SucceededBytes int `json:"succeeded_bytes"`
} `json:"total_upload_size"`
} `json:"upload"`
} `json:"remote_store"`
}
// IndicesStatsRequestCache is a sub type of IndicesStatsInfo containing stats about index request cache
type IndicesStatsRequestCache struct {
MemorySizeInBytes int `json:"memory_size_in_bytes"`
Evictions int `json:"evictions"`
HitCount int `json:"hit_count"`
MissCount int `json:"miss_count"`
}
// IndicesStatsRecovery is a sub type of IndicesStatsInfo containing stats about index recovery
type IndicesStatsRecovery struct {
CurrentAsSource int `json:"current_as_source"`
CurrentAsTarget int `json:"current_as_target"`
ThrottleTimeInMillis int `json:"throttle_time_in_millis"`
}
// IndicesStatsInfo is a sub type of IndicesStatsAll, IndicesStatsDetails aggregating all document stats
type IndicesStatsInfo struct {
Docs IndicesStatsDocs `json:"docs"`
Store IndicesStatsStore `json:"store"`
Indexing IndicesStatsIndexing `json:"indexing"`
Get IndicesStatsGet `json:"get"`
Search IndicesStatsSearch `json:"search"`
Merges IndicesStatsMerges `json:"merges"`
Refresh IndicesStatsRefresh `json:"refresh"`
Flush IndicesStatsFlush `json:"flush"`
Warmer IndicesStatsWarmer `json:"warmer"`
QueryCache IndicesStatsQueryCache `json:"query_cache"`
Fielddata IndicesStatsFielddata `json:"fielddata"`
Completion IndicesStatsCompletion `json:"completion"`
Segments IndicesStatsSegments `json:"segments"`
Translog IndicesStatsTranslog `json:"translog"`
RequestCache IndicesStatsRequestCache `json:"request_cache"`
Recovery IndicesStatsRecovery `json:"recovery"`
}
// IndicesStatsAll is a sub type of IndicesStatsResp containing information about docs stats from all indices
type IndicesStatsAll struct {
Primaries IndicesStatsInfo `json:"primaries"`
Total IndicesStatsInfo `json:"total"`
}
// IndicesStatsDetails is a sub type of IndicesStatsIndices containing the information about the index uuid and index stats
type IndicesStatsDetails struct {
UUID string `json:"uuid"`
Primaries IndicesStatsInfo `json:"primaries"`
Total IndicesStatsInfo `json:"total"`
}
// IndicesStatsIndices is a sub type of IndicesStatsResp containing information about docs stats from specific indices
type IndicesStatsIndices map[string]IndicesStatsDetails