Loading...
Loading...
Design and review Elasticsearch index mappings for stated access patterns: correct field types, text+keyword multi-fields, doc_values tuning, mapping-explosion avoidance, and explicit shard settings. Use when creating a new index, reviewing a mapping for storage or query performance, fixing wrong field types, or when the user asks which type to use for search, filter, sort, or aggregation on a field.
npx skill4agent add elastic/agent-skills elasticsearch-index-designelasticelasticGET /GET /_cat/indicesGET /{index}/_mappingGET /{index}/_settings/index.modePOST /_queryelastic_sourceGET /GET /{index}/_mapping| Pattern | Mapping |
|---|---|
| Full-text search only | |
| Filter / agg / sort only | |
| Full-text search and sort or aggregation | |
| Decimal price or metric | |
| Timestamp | |
| True/false flag | |
| Free-form key/value map with many distinct keys | |
nametextkeywordnamename.keywordtextkeywordPUT /{index}textkeywordnumber_of_shardsnumber_of_replicasPUT /{index}products{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"name": {
"type": "text",
"fields": {
"keyword": { "type": "keyword", "ignore_above": 256 }
}
},
"price": { "type": "double" },
"created": { "type": "date" },
"in_stock": { "type": "boolean" }
}
}
}PUT /productssettingsmappingsGET /products/_mappingurlstatus_codetagskeywordtexttexttext.keywordmessage.keywordignore_aboveignore_aboveobject"dynamic": trueflatteneddoc_values: falsesession_id"doc_values": falsekeywordscaled_floatresponse_time_msscaled_floatscaling_factorfloatdouble"dynamic": "strict"eventsevents-v2PUT /events-v2mappingssettingsPOST /_reindexwait_for_completion=false{ "index": "events" }{ "index": "events-v2" }GET /events-v2/_countGET /events-v2/_mappingevents{
"mappings": {
"properties": {
"@timestamp": { "type": "date" },
"event_id": { "type": "keyword" },
"session_id": { "type": "keyword", "doc_values": false },
"url": { "type": "keyword" },
"status_code": { "type": "keyword" },
"response_time_ms": { "type": "scaled_float", "scaling_factor": 100 },
"tags": { "type": "keyword" },
"message": { "type": "text" },
"labels": { "type": "flattened" }
}
}
}PUT /{index}textmessage.keywordignore_aboveobjectflatteneddoc_values: falsescaled_floatPOST /_reindextextkeyword{
"mappings": {
"properties": {
"product_name": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }
}
}
}statuskeywordtext{ "mappings": { "properties": { "status": { "type": "keyword" } } } }labelsflattened{ "mappings": { "properties": { "labels": { "type": "flattened" } } } }GET /{index}/_mappingGET /{index}/_countPOST /_reindexignore_aboveflatteneddoc_values| HTTP API (shorthand) | |
|---|---|
| |
| |
| |
| |
| |
| |