Elasticsearch: is there a way to declare for all (possibly dynamic) subfields of an object field as string? Elasticsearch: is there a way to declare for all (possibly dynamic) subfields of an object field as string? elasticsearch elasticsearch

Elasticsearch: is there a way to declare for all (possibly dynamic) subfields of an object field as string?


You're almost there.

First, your dynamic mapping's path must be on clearances.*, and it must be a path_match and not a plain match.

Here's a runnable example: https://www.found.no/play/gist/df030f005da71827ca96

export ELASTICSEARCH_ENDPOINT="http://localhost:9200"# Create indexescurl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{    "settings": {},    "mappings": {        "test": {            "dynamic_templates": [                {                    "clearances_as_string": {                        "path_match": "clearances.*",                        "mapping": {                            "type": "string",                            "index": "not_analyzed"                        }                    }                }            ]        }    }}'# Index documentscurl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '{"index":{"_index":"play","_type":"test"}}{"clearances":{"glamis":1234,"cawdor":5678}}{"index":{"_index":"play","_type":"test"}}{"clearances":{"glamis":"aa2862jsgd","cawdor":"some string"}}'# Do searchescurl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '{    "facets": {        "cawdor": {            "terms": {                "field": "clearances.cawdor"            }        }    }}'