# Problème pour convertir un float en geo\_point

**URL:** https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918
**Category:** Discussions en français
**Created:** [February 12, 2020, 8:16am UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918 "2020-02-12T08:16:52Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![IneedHelp](https://avatars.discourse-cdn.com/v4/letter/i/eada6e/32.png) [@IneedHelp](https://discuss.elastic.co/u/IneedHelp)
#### Post date: [February 12, 2020, 8:16am UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918/1 "2020-02-12T08:16:52Z")

</div>

Bonjour,

J'ai un fichier csv que je souhaites traiter avec logstash avec des infos du type : numéro,adresse,coord x, coord y .  
Pour la partie parsing dans logstash : aucun problème je récupère bien toutes mes infos. Suite à ça je créé un field location pour pouvoir avoir un field assimilable à un geo\_point:

```auto
convert => {
	"x" => "float"
	"y" => "float"
}
add_field => {"location" => "%{x}"}
add_field => {"location" => "%{y}"}
convert => {
	"location" => "float"
}

```

Par la suite j'envoie mes données dans elastic avec le mapping suivant:

```auto
{
  "properties": {
    "Adresse": {
      "type": "keyword"
    },
    "Pays": {
      "type": "keyword"
    },
    "Type": {
      "type": "keyword"
    },
    "x": {
      "type": "long"
    },
    "y": {
      "type": "long"
    },
    "location": {
      "type": "geo_point"
    },
    "Code Postal": {
      "type": "keyword"
    },
    "Correspondant": {
      "type": "keyword"
    },
    "timestamp": {
      "type": "date"
    },
    "Ville": {
      "type": "keyword"
    }
  }
}

```

Pour les données contenant les field x et y ( certaines n'ont pas ces champs car pas d'infos pour cette personne) j'obtiens le message suivant:

```auto
[2020-02-12T08:19:18,201][WARN][logstash.outputs.elasticsearch][main] Could not index event to Elasticsearch. {:status=>400, :action=>["index", {:_id=>nil, :_index=>"squid-sadoc", :_type=>"_doc", :routing=>nil}, #<LogStash::Event:0x33fd37bd>], :response=>{"index"=>{"_index"=>"squid-sadoc", "_type"=>"_doc", "_id"=>"-stEOHABEl3EnDY7MDk_", "status"=>400, "error"=>{"type"=>"mapper_parsing_exception", "reason"=>"failed to parse field [location] of type [geo_point]", "caused_by"=>{"type"=>"parse_exception", "reason"=>"unsupported symbol [.] in geohash [1.4180062632087487]", "caused_by"=>{"type"=>"illegal_argument_exception", "reason"=>"unsupported symbol [.] in geohash [1.4180062632087487]"}}}}}}

```

Ce qui est intéressant ( si change le type du champ location en text pour ne pas avoir de soucis) , c'est qu'il n'y a pas le même problème pour les fields x et y ( ils sont bien enregistrés comme des nombre ).

Pour expliquer le contexte, les coordonnées dans le csv sont exprimées au format lambert donc avec un script python je les exprime au format wgs84 engendrant des float de cette taille : 1.4180062632087487 ( je le précise car je ne sais pas si cela peut être la cause )

Je vous remercie d'avance pour toute réponse apportée.

---

<div class="post-metadata">

### Author: ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)
#### Post date: [February 12, 2020, 9:14am UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918/3 "2020-02-12T09:14:31Z")

</div>

Je ne comprends pas trop le script logstash.

Mais voici un tuto que j'ai rédigé il y a longtemps qui permettait notamment à un moment de transformer `longitude`, et `latitude` en `location.lon` et `location.lat` ce qui est compatible avec un `geo_point`.

[https://david.pilato.fr/blog/2018/03/22/enriching-your-postal-addresses-with-elastic-stack-part-1/](https://david.pilato.fr/blog/2018/03/22/enriching-your-postal-addresses-with-elastic-stack-part-1/)

---

<div class="post-metadata">

### Author: ![ahmed\_charafouddine](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ahmed_charafouddine/32/45129_2.png) [@ahmed\_charafouddine](https://discuss.elastic.co/u/ahmed_charafouddine)
#### Post date: [February 12, 2020, 9:59am UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918/4 "2020-02-12T09:59:54Z")

</div>

Un geo-point est un type Objet avec les cles `lat` et `lon`. Donc si tu définis le variable `location` comme geo\_point, il va falloir que tu définisses les valeurs des clés` location.lat` et `location.lon`.

Et pour cela, j'ai testé avec le filter suivant, ça a l'air de bien marcher.

```
input {
     stdin{}
}

filter {
  csv {
    separator => ","
    columns => [
        "x","y"
    ]
    remove_field => ["message", "@version", "@timestamp", "host"]
}

mutate {
    convert => { "x" => "float"}
    convert => { "y" => "float"}
    rename => {
        "x" => "[location][lon]"
        "y" => "[location][lat]"
    }
 }
}

```

En input :

`23.747,3.4`

En output :  
`{"location":{"lat":"3.234","lon":"23.743647"}}`

---

<div class="post-metadata">

### Author: ![IneedHelp](https://avatars.discourse-cdn.com/v4/letter/i/eada6e/32.png) [@IneedHelp](https://discuss.elastic.co/u/IneedHelp)
#### Post date: [February 12, 2020, 2:31pm UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918/5 "2020-02-12T14:31:19Z")

</div>

Tu as raison, merci beaucoup !  
Merci aussi dadoonet, je regarde ce tuto dès ce soir

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [March 11, 2020, 2:31pm UTC](https://discuss.elastic.co/t/probleme-pour-convertir-un-float-en-geo-point/218918/6 "2020-03-11T14:31:30Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
