← 返回 Skills 市场
ivangdavila

Elasticsearch

作者 Iván · GitHub ↗ · v1.0.0
linuxdarwinwin32 ✓ 安全检测通过
1530
总下载
5
收藏
10
当前安装
1
版本数
在 OpenClaw 中安装
/install elasticsearch
功能描述
Query and index Elasticsearch with proper mappings, analyzers, and search patterns.
使用说明 (SKILL.md)

Mapping Mistakes

  • Always define explicit mappings—dynamic mapping guesses wrong (first "123" makes field integer, later "abc" fails)
  • text for full-text search, keyword for exact match/aggregations—using text for IDs breaks filters
  • Can't change field type after indexing—must reindex to new index with correct mapping
  • Set dynamic: "strict" to reject unmapped fields—catches typos in field names

Text vs Keyword

  • text is analyzed (tokenized, lowercased)—"Quick Brown" matches search for "quick"
  • keyword is exact bytes—"Quick Brown" only matches exactly "Quick Brown"
  • Need both? Use multi-field: "title": { "type": "text", "fields": { "raw": { "type": "keyword" }}}
  • Sort/aggregate on title.raw, search on title

Query vs Filter Context

  • Query context calculates relevance score—expensive, use for search ranking
  • Filter context is yes/no—cacheable, use for exact conditions (status, date ranges)
  • Combine: bool.must for scoring, bool.filter for filtering without scoring
  • Range queries on dates/numbers almost always belong in filter, not query

Analyzers

  • standard analyzer lowercases and removes punctuation—fine for most text
  • keyword analyzer keeps exact string—use for codes, SKUs, emails
  • Language analyzers (english) stem words—"running" matches "run"
  • Test analyzer with _analyze endpoint before indexing—surprises in production hurt

Nested vs Object

  • Object type flattens arrays—{"tags": [{"key":"a","val":1}, {"key":"b","val":2}]} becomes tags.key: [a,b], tags.val: [1,2]
  • Flattened loses association—query key=a AND val=2 incorrectly matches above
  • Use nested type to preserve object boundaries—requires nested query wrapper
  • Nested is expensive—avoid for high-cardinality arrays

Pagination Traps

  • from + size limited to 10,000 hits—deep pagination fails
  • search_after for deep pagination—requires consistent sort, typically _id
  • Scroll API for bulk export—keeps point-in-time view, but ties up resources
  • Don't use scroll for user pagination—search_after is correct choice

Bulk Operations

  • Never index documents one-by-one—use _bulk API, 5-15MB batches
  • Bulk format: newline-delimited JSON, action line then document line
  • Check response for partial failures—bulk can succeed overall with individual doc errors
  • Set refresh=false during bulk loads—refresh after batch completes

Performance

  • _source: false with stored_fields if you don't need full document—reduces I/O
  • Use filter for cacheable conditions—Elasticsearch caches filter results
  • Avoid leading wildcards (*term)—forces full scan; use reverse field for suffix search
  • profile: true shows query execution breakdown—find slow clauses

Sharding

  • Shard size 10-50GB optimal—too small = overhead, too large = slow recovery
  • Number of shards fixed at creation—can't reshard without reindexing
  • Replicas for read throughput and availability—set based on query load
  • Start with 1 shard for small indices—over-sharding kills performance

Index Management

  • Use index templates—new indices get consistent mappings and settings
  • Use aliases for zero-downtime reindexing—point alias to new index after reindex
  • ILM (Index Lifecycle Management) for time-series—auto-rollover, delete old indices
  • Close unused indices to free memory—closed index uses no heap

Aggregations

  • terms agg needs keyword field—text fields fail or give garbage
  • Default size: 10 on terms agg—increase to get all buckets, or use composite
  • Cardinality is approximate (HyperLogLog)—exact count requires scanning all docs
  • Nested aggs require nested wrapper—matches nested query pattern

Common Errors

  • "cluster_block_exception"—disk > 85%, cluster goes read-only; clear disk, reset with _cluster/settings
  • "version conflict"—concurrent update; retry with retry_on_conflict or use optimistic locking
  • "circuit_breaker_exception"—query uses too much memory; reduce aggregation scope
  • Mapping explosion from dynamic fields—set index.mapping.total_fields.limit and use strict mapping
安全使用建议
This skill is a read-only instruction bundle (no code) that provides Elasticsearch best practices. It is internally consistent and low-risk to install. Before using: ensure any Elasticsearch endpoint and credentials you provide are least-privilege (prefer API keys limited to specific indices and actions), restrict network access to trusted clusters, test bulk/index operations on staging, and consider disabling autonomous invocation or not supplying credentials if you don't want the agent to perform queries/indexes automatically.
功能分析
Type: OpenClaw Skill Name: elasticsearch Version: 1.0.0 The skill bundle is benign. It primarily consists of informational content about Elasticsearch best practices and common issues in SKILL.md. The only notable capability is the explicit requirement for `curl` in the metadata, which is a standard tool for interacting with Elasticsearch APIs and is consistent with the skill's stated purpose. There are no signs of prompt injection, data exfiltration, malicious execution, persistence mechanisms, or obfuscation.
能力评估
Purpose & Capability
Name/description match the provided content (mapping, analyzers, queries, bulk operations, etc.). Declaring curl as an available binary is appropriate for an instruction-only skill that may use HTTP to call an Elasticsearch API.
Instruction Scope
SKILL.md contains best-practice guidance and operational notes about Elasticsearch APIs and behaviors. It does not instruct the agent to read arbitrary system files, access unrelated services, or exfiltrate data. All actions described are within the Elasticsearch domain.
Install Mechanism
No install spec or code files are present (instruction-only), so nothing will be written to disk or downloaded during installation — lowest-risk model.
Credentials
The skill declares no required environment variables or credentials. This is reasonable for a generic guidance skill, but practical use will require an Elasticsearch endpoint and likely credentials (API key/basic auth). The skill does not request them explicitly; ensure any credentials you supply are minimal-privilege and scoped.
Persistence & Privilege
always is false and the skill is user-invocable. Autonomous invocation is enabled (platform default) but not by itself a problem — be mindful that with provided ES credentials the agent could run queries or index data autonomously.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install elasticsearch
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /elasticsearch 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial release
元数据
Slug elasticsearch
版本 1.0.0
许可证
累计安装 10
当前安装数 10
历史版本数 1
常见问题

Elasticsearch 是什么?

Query and index Elasticsearch with proper mappings, analyzers, and search patterns. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1530 次。

如何安装 Elasticsearch?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install elasticsearch」即可一键安装,无需额外配置。

Elasticsearch 是免费的吗?

是的,Elasticsearch 完全免费(开源免费),可自由下载、安装和使用。

Elasticsearch 支持哪些平台?

Elasticsearch 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(linux, darwin, win32)。

谁开发了 Elasticsearch?

由 Iván(@ivangdavila)开发并维护,当前版本 v1.0.0。

💬 留言讨论