Hello @all,
J'ai posté le même sujet en anglais, je tente aussi ma change sur le canal FR de mes compatriotes !
J'ai une blinde de données indexées sous le format geo_point dans elasticsearch.
Tout fonctionne très bien si je fais une requête de géolocalisation genre :
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"geo_distance": {
"distance": "5km",
"iplocation.location": {
"lat": 48.8761638,
"lon": 2.3345515
}
}
}
}
}
}
Par contre, j'ai besoin, pour tracer des markers sur une carte, d'exporter uniquement les coordonnées géographiques (Exporter l'integralité des documents serait trop lourd).
J'ai tenté deux méthodes; La méthode fields ne me sort jamais le champs en question :
{
"query": {
"bool": {
"must": {
"range": {
"urls.date": {
"gte": "now-1h"
}
}
}
}
},
"fields": [
"iplocation.location"
],
"sort": [
{
"date": {
"order": "desc"
}
}
],
"size": 100
}
Ce qui me donne des documents du type :
{
"_index" : "monindex",
"_type" : "montype",
"_id" : "AUt9PkvGDgH0n4KFZQ2Q",
"_score" : null,
"sort" : [
1429286509566
]
},
Donc, pas de champs location.
J'ai alors tenté le script_fields, ce qui marche un peu mieux mais retourne des données partielles, car plusieurs shards retournent une erreur.
La query :
{
"query": {
"bool": {
"must": {
"range": {
"urls.date": {
"gte": "now-1h"
}
}
}
}
},
"script_fields": {
"geo": {
"script": "doc['iplocation.location'].value"
}
},
"sort": [
{
"date": {
"order": "desc"
}
}
],
"size": 10000
}
L'erreur sur 3 shards (sur 5) :
RemoteTransportException[[MonServeur][inet[/blah:9300]][indices:data/read/search[phase/fetch/id]]]; nested: IOException[Can't write type [class org.elasticsearch.common.geo.GeoPoint]];
Du coup, je n'arrive jamais a récupérer la totalité de mes données.
Si quelqu'un a une idée, je suis preneur !
Merci !
Thierry