numeric_detection
не является шаблоном. Это field mapping
. Когда вы указываете несколько templates
, они будут обрабатываться по порядку.
Я попробовал следующее упражнение, чтобы подтвердить приоритет между numeric detection
и dynamic templates
.
Сопоставление:
{
"dynamic_templates": [
{
"integers": {
"match_mapping_type": "long",
"mapping": {
"type": "short"
}
}
}
],
"numeric_detection": true
}
Если он обнаруживает номер, у него есть два варианта. Один установить как long
, что означает включение numeric_Detection
, а другой, если он long
, установить его как short
, который обрабатывается dynamic_templates
.
Затем проиндексированы данные ниже
{
"whoami":"25"
}
Потом проверил маппинг. Я нашел это.
"properties": {
"whoami": {
"type": "short"
}
}
Затем я попытался отключить отображение dynamic field
.
{
"dynamic_templates": [
{
"integers": {
"match_mapping_type": "long",
"mapping": {
"type": "short"
}
}
}
],
"numeric_detection": false
}
На этот раз whoami
сохраняется как text
.
Таким образом, приоритет следующий.
- Dynami c сопоставление полей - высшее
- Dynami c сопоставление шаблонов - наименьшее
dynamic field
указывает, какое правило должно применяться. Как только правила применяются до dynamic field mapping
, пользовательские правила применяются до dynamic template mapping