Reconnaissance d'objet geo dans elasticsearch

Bonjour,
Mon objectif est d'indexer une collection depuis mongodb vers ES afin d'exploiter les points geo sur la MAP kibana. J'utilise mongo-connector. Ma collection mongodb contient entre autre un objet comme suit :

"location": {
		"type": "geo_point",
		"coordinates": {
			"lat": 10.6421404,
			"long": 34.6872422
		}
	}

quand je lance mongo-connector, l'index et son mapping sont crées automatiquement et l'objet geo_point n'est reconnu en tant que tel. le mapping obtenu pour cet objet est comme suit :

"location": {
              "properties": {
                "lat": {
                  "type": "float"
                },
                "long": {
                  "type": "float"
                },
                "name": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                },
                "type": {
                  "type": "text",
                  "fields": {
                    "keyword": {
                      "type": "keyword",
                      "ignore_above": 256
                    }
                  }
                }
              }
            },

Avec ce mapping, kibana Map ne reconnait pas l'index.

Qu'est ce que j'ai oublié, que faut-il faire ?

Sachant que mon objet source mongodb contient beaucoup de champ, j'ai pas trop envie de créer à la main un mapping avec les risque d'erreur.
Merci d'avance

Il faut créer l'index et le mapping avant d'insérer le tout premier document.
Supprime ton index et recommence.

J'ai créé un index et un mapping from scratch en mettant l'objet location comme suit :

 "location": {
              "properties": {
                "coordinates": {
                  "type": "geo_point"
                }
              }
            }

l'objet source dans mongodb est le suivant comme exemple :

"location": {
		"coordinates": {
			"lat": 10.6421404,
			"long": 34.6872422
		}
	}

Quand je lance la commande d'import des data via mongo-connector, j'obtiens l'erreur suivante :

Line 1: 2020-03-28 15:09:13,242 [DEBUG] elasticsearch:86 - < {"took":1745,"errors":true,"items":[{"index":{"_index":"stops","_type":"stop","_id":"5e70d49a2a907e356a367cf3","status":400,"error":{"type":"illegal_argument_exception","reason":"mapper [started_in.location.coordinates] of different type, current_type [geo_point], merged_type [ObjectMapper]"}}},{"index":{"_index":"mongodb_meta","_type":"mongodb_meta","_id":"5e70d49a2a907e356a367cf3","_version":29,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":12675,"_primary_term":2,"status":200}},{"index":{"_index":"stops","_type":"stop","_id":"5e70d49a2a907e356a367cf4","status":400,"error":{"type":"illegal_argument_exception","reason":"mapper [location.coordinates] of different type, current_type [geo_point], merged_type [ObjectMapper]"}}},{"index":{"_index":"mongodb_meta","_type":"mongodb_meta","_id":"5e70d49a2a907e356a367cf4","_version":27,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1...

Merci d'avance

Essaye de simuler from scratch sans MongoDB, ce qui se passe. Et si tu n'y arrives pas, partage le script que tu as rédigé.

Oui si je fais un index manuellement en mappant l'objet en geo_point est ça marche.

en ce qui concerne le script, en fait, je fais l'intégration des données en utilisant mongo-connector, et c'est lui qui se charge de créer le mapping automatiquement.
Comme ma collection contient plusieurs dizaines de champs, je cherche un moyen simple et rapide de créer le mapping "pas manuellement" :slight_smile:

J'ai essayé par le biais de logstash et c'est pareil, l'objet location est mappé comme "text"

Un fous que le mapping est créé ça devrait être bon.

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