У меня Elasticsearch / Kibana 7.6.2, работающий в docker
Я изначально загрузил новый индекс из CSV-файла, используя CSV-файл загрузки при загрузке kibana, который создал новый индекс
I ' я создал десятки визуализаций на приборной панели, которые все работали нормально
Я очистил данные в индексе, используя _delete_by_query
, и перезагрузил данные из файла JSON, используя curl myindex/_bulk
Это все сработало, НО @timestamp не заполнился в моем индексе, и поэтому теперь все визуализации не могут найти никаких данных, так как кажется, что исправлено использование @timestamp в качестве фильтра даты. Я не могу создать новую визуализацию, поскольку не могу заставить фильтр по умолчанию использовать мое поле даты (которое заполняется нормально)
Я перезагрузил, используя
myindex/_bulk
{ "index" : {} }
{"RECORDS" : -27620,"KPI_DATE" : "2020-04-01","KPI_TYPE" : "Net Sales","DEPARTMENT" : "Sales","BRANCH" : "My Company","BRAND" : "My Company","ORDER" : "1110"}
{ "index" : {} }
{"RECORDS" : -20880,"KPI_DATE" : "2020-04-06","KPI_TYPE" : "Net Sales","DEPARTMENT" : "Sales","BRANCH" : "My Company","BRAND" : "My Company","ORDER" : "1110"}
{ "index" : {} }
{"RECORDS" : -3981.5,"KPI_DATE" : "2020-02-21","KPI_TYPE" : "NET +/-","DEPARTMENT" : "Sales","BRANCH" : "My Company","BRAND" : "My Company","ORDER" : "1110"}
Все данные импортированы, но @timestamp не заполнен
GET myindex/_search?size=0
{
"aggs": {
"min_date": {"min": {"field": "KPI_DATE", "format": "yyyy-MM-dd"}},
"max_date": {"max": {"field": "KPI_DATE", "format": "yyyy-MM-dd"}},
"min_timestamp": {"min": {"field": "@timestamp"}},
"max_timestamp": {"max": {"field": "@timestamp"}}
}
}
Правильно показывает min / max KPI_DATE, но @timestamp имеет значение null
"aggregations" : {
"max_date" : {
"value" : 1.5873408E12,
"value_as_string" : "2020-04-20"
},
"min_date" : {
"value" : 1.4278464E12,
"value_as_string" : "2015-04-01"
},
"max_timestamp" : {
"value" : null
},
"min_timestamp" : {
"value" : null
}
}
Я попытался обновить @timestamp, используя
POST myindex/_update_by_query
{
"query": {"match_all": {}},
"script": {
"source": "ctx._source._timestamp = ctx._source.KPI_DATE"
}
}
, который возвращает ошибку, говоря, что поле является полем метаданных, которое я не могу обновить, Field [_timestamp] is a metadata field and cannot be added inside a document. Use the index API request parameters
Мое отображение выглядит так, дата выглядит хорошо:
{
"mapping": {
"_doc": {
"_meta": {
"created_by": "ml-file-data-visualizer"
},
"properties": {
"@timestamp": {
"type": "date"
},
"BRANCH": {
"type": "keyword"
},
"BRAND": {
"type": "keyword"
},
"DEPARTMENT": {
"type": "keyword"
},
"KPI_DATE": {
"type": "date",
"format": "iso8601"
},
"KPI_TYPE": {
"type": "keyword"
},
"ORDER": {
"type": "integer"
},
"RECORDS": {
"type": "float"
}
}
}
}
}
Он автоматически добавил @timestamp, который я не могу выяснить, устарел ли он или нет из-за различных вещей, которые я читал, пытаясь исправить это за последние несколько часов!
Так как же я продолжу ?! Я бы предпочел не начинать с нуля!
Мне нужно либо иметь возможность изменить фильтр по умолчанию в kibana вместо использования @timestamp (я уверен, что он установил это автоматически), либо мне нужно получить чтобы заполнить поле @timestamp в моем индексе.
Я искал несколько часов и чувствую, что, должно быть, упускаю что-то очевидное!
Заранее спасибо!