Я использую Logstash для вывода журналов из журнала доступа Tomcat в elasticsearch. Шаблон, который я использую, выглядит следующим образом:
grok {
type => "access_log"
pattern => "\[%{DATA:my_timestamp}\] %{IP:client} %{WORD:method} %{URIPATHPARAM:request} \[%{DATA:auth_data}\] \[%{DATA:another_timstamp}\] %{NUMBER:result_code} %{NUMBER:duration} %{NUMBER:bytes}"
}
Как вы видели выше, длительность поля отформатирована как ЧИСЛО.
При регистрации информации в elasticsearch и выполнении запроса REST через плагин Chrome sense следующим образом:
GET /_all/_mapping?pretty=1
Он идентифицирует поле, но с типом String следующим образом:
"duration": {
"type": "multi_field",
"fields": {
"duration": {
"type": "***string***",
"omit_norms": true
},
"raw": {
"type": "string",
"index": "not_analyzed",
"omit_norms": true,
"index_options": "docs",
"include_in_all": false,
"ignore_above": 256
}
}
}
Я ожидаю, что он поймет это как число. Ожидается ли это?
Например, другие поля, такие как geoip, понимаются как другой тип, чем строка.
"geoip": {
"dynamic": "true",
"properties": {
"location": {
"type": "geo_point"
}
}
},
Спасибо заранее