Я пытаюсь переопределить сопоставление для поля.
Существует шаблон индекса по умолчанию (который я не могу изменить), и я переопределяю его с помощью пользовательского.
Индекс по умолчанию имеет отображение для поля «сообщения» в виде текста, но мне нужно сделать так, чтобы оно обрабатывалось как объект, а его поля были индексируемыми / доступными для поиска.
Это шаблон индекса по умолчанию с порядком 10.
{
"mappings": {
"_default_": {
"dynamic_templates": [
{
"message_field": {
"mapping": {
"index": true,
"norms": false,
"type": "text"
},
"match": "message",
"match_mapping_type": "string"
}
},
...
],
"properties": {
"message": {
"doc_values": false,
"index": true,
"norms": false,
"type": "text"
},
...
}
}
},
"order": 10,
"template": "project.*"
}
И вот мое переопределение:
{
"template" : "project.*",
"order" : 100,
"dynamic_templates": [
{
"message_field": {
"mapping": {
"type": "object"
},
"match": "message"
}
}
],
"mappings": {
"message": {
"enabled": true,
"properties": {
"tag": {"type": "string", "index": "not_analyzed"},
"requestId": {"type": "integer"},
...
}
}
}
}
Это хорошо работает, но я в итоге определил все поля (tag, requestId, ...) в объекте "message".
Есть ли способ сделать все поля в объекте "message" индексируемыми / доступными для поиска?
Вот пример документа:
{
"level": "30",
...
"kubernetes": {
"container_name": "data-sync-server",
"namespace_name": "alitest03",
...
},
"message": {
"tag": "AUDIT",
"requestId": 1234,
...
},
}
...
}
Пробовал много вещей,но я не могу заставить его работать.
Я использую ElasticSearch версии 2.4.4.