您快到了。
首先,动态映射的路径必须位于clearances.*
,并且必须是a path_match
而不是plain match
。
这是一个可运行的示例:https ://www.found.no/play/gist/df030f005da71827ca96
export ELASTICSEARCH_ENDPOINT="http://localhost:9200"
# Create indexes
curl -XPUT "$ELASTICSEARCH_ENDPOINT/play" -d '{
"settings": {},
"mappings": {
"test": {
"dynamic_templates": [
{
"clearances_as_string": {
"path_match": "clearances.*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
]
}
}
}'
# Index documents
curl -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 searches
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_search?pretty" -d '
{
"facets": {
"cawdor": {
"terms": {
"field": "clearances.cawdor"
}
}
}
}
'