Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Auto-detection of Elasticsearch and Kibana version being used

已关闭
#766 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 1 天内回复

@JoshMock 已经在做这个了。

开始于 2026年10月13日。

评估

这个 Issue 还没有评估数据。

描述

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)

主要语言
TypeScript
星标
49
派生
27
平均合并
1 天 23 小时
30 天内合并 PR
67

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

elastic/cli 的其他 Issue

查看 elastic/cli 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。