Динамический тип Elasticsearch и поля not_analyse
Я создал такой динамический шаблон, как у меня 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"
}
}
}
]
}
}
}
Пример документа:
{
"_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"
}
]
}
}
Как изменить этот шаблон таким образом, чтобы test_id
поле и branch_id
поле, со значениями которого не следует индексировать или анализировать? Будет not_analyzed
работать, если значением является Array и Array объектов?
1 ответ
Решение
Настройка параметра индекса на no
и включен в false
следует убедиться, чтоtest_id
массив и branch_id
Объект не проиндексирован.
Пример:
{
"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
}
}
}
]
}
}
}