Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Auto-detection of Elasticsearch and Kibana version being used

Đã đóng
#766 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@JoshMock đang làm issue này rồi.

Từ ngày 13/10/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

Following the work done in #530, the CLI should be able to auto-detect what versions of Elasticsearch and Kibana it is targeting, so that the commands and flags exposed align with what features are available in that version.

Requirements

  • elasticsearch.version and kibana.version type changes from a semver string to string | { value: string, checked_ts: string } where value is the semver string (or serverless), and checked_ts is an ISO 8601 datetime string describing when that version was last checked.
  • The first time a CLI command is issued targeting an Elasticsearch or Kibana instance that has no version value set in its config file, it fetches the version first (GET / for Elasticsearch, GET /api/status for Kibana), setting it in the config using the { value, checked_ts } form. Once the sniff is complete, the original command runs as normal, with commands filtered for the detected version.
  • Running elastic status also sniffs and sets the same version information.
  • If checked_ts contains a date more than 30 days in the past, re-run the sniff and update the values.
  • A version set as a plain string is treated as user-pinned: it is never sniffed, refreshed, or overwritten. Only the { value, checked_ts } form expires.
  • An optional top-level detect_version: boolean key (applies to all contexts) controls detection. Defaults to true. If set to false, always skip the sniff step even if a version value is not set.
  • If the config file is not writable, the sniff step should be skipped.

Implementation details

  • Timing: the sniff runs during early config loading, before command registration, so availability filtering uses the detected version on the same invocation.
  • Skipped modes: never sniff on --help or --dry-run.
  • Credentials: secrets (including $(cmd:...) expressions) are resolved early only when a sniff is actually due. Invocations that do not need a sniff keep the current behavior from #706 (no early secret resolution).
  • Writing the config: update only the contexts.<name>.<service>.version node using yaml's parseDocument, preserving the user's comments and formatting. Do not round-trip through writeConfig/serializeConfig, which drops comments.
  • Sniff failure (network error, 401, 404, unparseable response): fail open. Print a one-line warning to stderr (suppressed with --json), continue without a version (all commands available), and write nothing. The next invocation retries.
  • HTTP: sniff requests set redirect: 'error', like the other credentialed requests.

authored by Pi Coding Agent (Claude Opus 5.5)

Ngôn ngữ chính
TypeScript
Star
49
Fork
27
Merge trung bình
1 ngày 18 giờ
Pull request đã merge (30 ngày)
65

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của elastic/cli

Tất cả issue của elastic/cli

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.