Поскольку вы добавили шаблон индекса, если вы сейчас пытаетесь сохранить документ в индексе, который не существует, и у него есть имя, которое будет соответствовать шаблону, который вы указали в шаблоне "index_patterns": ["quick-search*"]
,asticsearch будет автоматически создайте отображение в соответствии с шаблоном вместо создания отображения на основе вашего ввода.
Более того, если вы попытаетесь создать новый индекс и попытаетесь установить сопоставление (опять же, соответствующее шаблону), шаблон будет работать по умолчанию. Таким образом, для нового индекса вы можете установить тип keyword
для item
. Это заменит значение по умолчанию long
шаблона, но другие параметры будут взяты из шаблона и также будут присутствовать.
Для проверки go на kibana и установки вашего шаблона
PUT _template/quick-search
{
"index_patterns": [
"quick-search*"
],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"item": {
"type": "long"
},
"description": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"id": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
Затем попробуйте создать новый индекс, но элемент должен быть ключевым словом
PUT quick-search-item-keyword
{
"mappings": {
"properties": {
"item": {
"type": "keyword",
"index": true
}
}
}
}
GET quick-search-item-keyword/_mapping
А теперь просто сохраните документ в индексе, который не существует
POST quick-search-test-id/_doc/
{
"id": "test"
}
GET quick-search-test-id/_mapping
Попробуйте сохранить тот же документ в индексе, который не существует и не соответствует шаблону индекса вашего шаблона
POST test/_doc/
{
"id": "test"
}
GET test/_mapping
Ничто не отличается, если вы используете java клиент. То же самое будет применяться