[我有一些坐标是从Logstash传递给Elasticsearch的,但是Elastic只保留3个小数,因此就坐标而言,我完全失去了位置。
当我从Logstash发送数据时,可以看到它具有正确的值:
{
"nasistencias" => 1,
"tiempo_demora" => "15",
"path" => "/home/elk/data/visits.csv",
"menor" => "2",
"message" => "5,15,Parets del Vallès,76,0,8150,41.565505,2.234999575,LARINGITIS AGUDA,11/3/17 4:20,1,38,1,2,POINT(2.2349995750000695 41.565505000000044)",
"id_poblacion" => 76,
"@timestamp" => 2017-03-11T04:20:00.000Z,
"poblacion" => "Parets del Vallès",
"edad_valor" => 0,
"patologia" => "LARINGITIS AGUDA",
"host" => "elk",
"@version" => "1",
"Geopoint_corregido" => "POINT(2.2349995750000695 41.565505000000044)",
"id_tipo" => 1,
"estado" => "5",
"cp" => 8150,
"location" => {
"lon" => 2.234999575, <- HERE
"lat" => 41.565505 <- AND HERE
},
"id_personal" => 38,
"Fecha" => "11/3/17 4:20"
}
但是后来,我在Kibana上获得了如下代码:
我进行如下转换:
mutate {
convert => { "longitud_corregida" => "float" }
convert => { "latitude_corregida" => "float" }
}
mutate {
rename => {
"longitud_corregida" => "[location][lon]"
"latitude_corregida" => "[location][lat]"
}
}
如何保留所有小数?使用地理定位,小数点后可能会返回错误的城市。
另一个问题(相关)
我将数据添加到csv文档中,如下所示:
# echo "5,15,Parets del Vallès,76,0,8150,"41.565505","2.234999575",LARINGITIS AGUDA,11/3/17 4:20,1,38,1,2,POINT(2.2349995750000695 41.565505000000044)" >> data/visits.csv
但是在原始文档中,坐标不是逗号,而是逗号。像这样:
# echo "5,15,Parets del Vallès,76,0,8150,"41,565505","2,234999575",LARINGITIS AGUDA,11/3/17 4:20,1,38,1,2,POINT(2.2349995750000695 41.565505000000044)" >> data/visits.csv
但是问题是它使逗号成为字段分隔符,并且所有数据都被错误地发送到Elasticsearch。就像这里:
[这里,纬度为41,565505
,但是昏迷使它理解41
为纬度,565505
为经度。我通过点更改了昏迷,并且不确定float是否可以理解昏迷和点,或者仅仅是昏迷。我的问题是,按点改变昏迷是否做错了?有没有更好的方法来纠正此问题?
为纬度/经度字段创建GEO-Point映射。这将导致ES中更精确和内部优化的存储,并使您更复杂GEO-Queries。
[请记住,您将需要重新索引数据,因为之后无法进行映射更改(如果已经存在需要更改字段的文档)
零停机时间方法: