Я хотел бы создать индекс, в котором индексируются только некоторые поля. Я создал шаблон со свойством enabled
, установленным в false. Таким образом, ни одно поле не индексируется по умолчанию.
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/enabled.html
Затем я определил поля, которые хочу индексировать с помощью динамических шаблонов. После того, как я вставил документ, ни одно поле не было проиндексировано. Я думаю, это потому, что enabled:false
применяется к дочерним элементам корневого элемента, и поскольку ни один из них не должен быть проиндексирован, динамические шаблоны не применяются.
Есть ли способ установить для false значение false для всех полей, не охватываемых динамическими шаблонами?
DELETE so
DELETE _template/test
PUT _template/test
{
"index_patterns": [
"*so*"
],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_doc": {
"dynamic": true,
"enabled": false,
"dynamic_templates": [
{
"typeOfMaterial": {
"path_match": "*.material.typeOfMaterial",
"mapping": {
"enabled": true,
"type": "nested"
}
}
},
{
"typeOfMaterialCode": {
"path_match": "*.material.typeOfMaterial.code",
"mapping": {
"enabled": true,
"type": "keyword"
}
}
}
]
}
}
}
PUT so/_doc/1
{
"count": 5,
"AAA": {
"material": {
"typeOfMaterial": [
{
"code": "MAT1"
}
]
}
}
}