В один прекрасный день, elastic может сойти с ума. Перестать принимать информацию в индекс и начать кидать в логи ошибки типа:
failed to parse field [time] of type [date]
Проблема в автоматическом распознавании содержимого полей. Особенно это касается поля, в котором содержится дата и время. Тот самый прекрасный день настал, когда наши программеры немножечко изменили формат даты. И этот формат не стал совпадать с форматом, который эластик использует по умолчанию.
Какой формат используется можно увидеть в mapping интересующего вас индекса:
GET /index-name/_mapping
Следующая засада, вы не можете на лету поменять тип поля в индексе. Только путем пересоздания индекса с нуля.
И самое противное. Если вы используете группу индексов в IndexPattern, сбойный индекс вылетит из поиска по проблемному полю.
Вобщем проблем с такими «прыгающими» типами полей будет чертовски много. Поэтому, рекомендую «гвоздями» прибивать тип поля в индексе.
Например, в индексе есть поле, содержащее дату. В Elastic такие поля могут попасть под шаблон (mapping) по умолчанию для даты и в индексе появится поле типа date. Потом программеры поменяют формат даты и поле перестает подходить под шаблон. Эластик будет считать что это поле типа text и тупо перестает добавлять информацию в индекс.
Если вы не планируете в дальнейшем использовать поле для поиска, самое простое решение привести его к типу text. В дальнейшем, смена формата даты никоим образом не повлияет на работу индекса.
Создание шаблона для индекса или группы индексов.
Посмотреть все шаблоны можно так:
GET _template
Посмотреть конкретный шаблон:
GET _template/template_name
Создать шаблон:
PUT _template/template_name
{
	"order" : 0,
	"index_patterns" : [
	  "index-name-*"
	],
	"settings" : {
	  "index" : {
		"number_of_shards" : "1"
	  }
	},
	"mappings" : { 
		"properties": {
			"time": {
          			"type" : "text",
         			"fields" : {
            				"keyword" : {
              					"ignore_above" : 256,
              					"type" : "keyword"
            				}
         			}
			}
		}
	},
	"aliases" : { }
}
Параметр index-patterns определяет шаблон именён индексов к которым будет применяться данный template. Т.е. если будет создан индекс с , например, именем index-name-2020.04.01, то шаблон будет к нему применен. И в дальнейшем в списке mappings вы увидите, что поле time будет иметь тип text.
Так же в этом шаблоне ограничивается количество шардов единицей. По умолчанию у вновь создаваемого шаблона значение этого параметра равно 3. Такое ограничение имеет смысл для небольших индексов. Максимальное количество шардов на сервер ограничено и при большом количестве индексов имеет смысл на один индекс давать один шард.
 
				











