如何强制Elastic从浮点数中保留更多小数

问题描述 投票:0回答:1

[我有一些坐标是从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上获得了如下代码:

enter image description here

我进行如下转换:

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。就像这里:

enter image description here

[这里,纬度为41,565505,但是昏迷使它理解41为纬度,565505为经度。我通过点更改了昏迷,并且不确定float是否可以理解昏迷和点,或者仅仅是昏迷。我的问题是,按点改变昏迷是否做错了?有没有更好的方法来纠正此问题?

elasticsearch logstash kibana
1个回答
0
投票

为纬度/经度字段创建GEO-Point映射。这将导致ES中更精确和内部优化的存储,并使您更复杂GEO-Queries

[请记住,您将需要重新索引数据,因为之后无法进行映射更改(如果已经存在需要更改字段的文档)

零停机时间方法:

  1. 创建具有优化映射的新索引(从当前索引派生,并手动进行更改)
  2. 重新索引数据(至少需要一些文档进行验证)
  3. 再次清空新索引
  4. 将logstash目标更改为新索引(考虑使用别名)
  5. 将旧数据重新索引为新索引
© www.soinside.com 2019 - 2024. All rights reserved.