I have created a dynamic template like this, as I have dynamic types
:
{
"template": "test-*", //match any index that starts with 'test-'
"settings": {
"number_of_shards": 5
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"dynamic_templates": [
{
"test_id": {
"match": "test_id", // This is an Array of strings field ["a","b"]
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
},
{
"branch_id": {
"match": "branch_id", // This is Array of objects field [{"a": "b"}, {"c": "d"}]
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
]
}
}
}
Example document:
{
"_index": "test-data13",
"_type": "025e179ccfd79cacd92f61bb17bddcf8abf83dc2",
"_id": "847",
"_version": 1,
"_score": 1,
"_source": {
"test_id": [
"test_id_test_10123" // disable indexing or full text search for this Array of string
],
"branch_id": [ // disable indexing or full text search for this Array of hashes
{
"1": "test_id_test_10123"
},
{
"2": "test_id_test_10124"
}
]
}
}
How to change this template in such a way that the test_id
field and branch_id
field, with values should not be indexed or analyzed? Will not_analyzed
work if the value is an Array and Array of objects?
Setting index option to no
and enabled to false
should ensure thattest_id
array and branch_id
object are not indexed.
Example:
{
"template": "test-*",
"settings": {
"number_of_shards": 5
},
"mappings": {
"_default_": {
"_all": {
"enabled": false
},
"dynamic_templates": [
{
"test_id": {
"match": "test_id",
"mapping": {
"index": "no"
}
}
},
{
"branch_id": {
"match": "branch_id",
"mapping": {
"index": "no",
"enabled": false
}
}
}
]
}
}
}