0

Я пытаюсь сохранить geoshape (как ниже) к ES через свинью с использованием org.elasticsearch.hadoop.pig.EsStorage (2.2.0):магазин Geoshape в Elasticsearch с использованием EShadoop от свиньи

{ 
    "location" : { 
     "type" : "circle", 
     "coordinates" : [-45.0, 45.0], 
     "radius" : "100m" 
    } 
} 

или:

{ 
    "location" : { 
     "type" : "polygon", 
     "orientation" : "clockwise", 
     "coordinates" : [ 
      [ [-177.0, 10.0], [176.0, 15.0], [172.0, 0.0], [176.0, -15.0], [-177.0, -10.0], [-177.0, 10.0] ], 
      [ [178.2, 8.2], [-178.8, 8.2], [-180.8, -8.8], [178.2, 8.8] ] 
     ] 
    } 
} 

Мы пытались следующее:

REGISTER ./elasticsearch-hadoop-2.2.0.jar; 

loadedRecords = LOAD 'inputFile.csv' USING PigStorage('|') AS (type:chararray,coordinates:bag{(float,float)},radius:chararray); 

elasticData = foreach loadedRecords GENERATE (type ,{(45.0f,46.0f)},radius) AS geoArea:tuple(type:chararray,coordinates:bag{(float,float)},radius:chararray); 

DESCRIBE elasticData ; 

DUMP elasticData; 

STORE elasticData INTO 'myindex/mytype' USING org.elasticsearch.hadoop.pig.EsStorage('es.http.retries=10','es.nodes=localhost','es.index.auto.create=true','es.mapping.pig.tuple.use.field.names=false'); 

и получаю сообщение об ошибке при разборе координат он столкнулся с не числовое значение и не удалось. (тип был разобран на КРУГ)

Мы попытались также следующее:

Я попробовал другую вещь, но это было проблематично, а также:

REGISTER ./elasticsearch-hadoop-2.2.0.jar; 

loadedRecords = LOAD 'inputFile.csv' USING PigStorage('|') AS (type:chararray,coordinates:chararray,radius:chararray); 

--elasticData = foreach loadedRecords GENERATE (type ,{(45.0f,46.0f)} ,radius) AS geo:tuple(type:chararray,coordinates:bag{(float,float)},radius:chararray; 
elasticData = foreach loadedRecords GENERATE TOMAP('type','circle','coordinates','[40.0f,46.0f]','radius','150m') AS geo:map[chararray]; 
DESCRIBE elasticData ; 

DUMP elasticData; 

STORE elasticData INTO 'myindex/mytype' USING org.elasticsearch.hadoop.pig.EsStorage('es.http.retries=10','es.nodes=host','es.index.auto.create=true','es.mapping.pig.tuple.use.field.names=false'); 

получил:

Caused by: com.fasterxml.jackson.core.JsonParseException: Current token (END_OBJECT) not numeric, can not use numeric value accessors 
at [Source: [email protected]76; line: 1, column: 83] 
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1581) 
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:533) 
    at com.fasterxml.jackson.core.base.ParserBase._parseNumericValue(ParserBase.java:799) 
    at com.fasterxml.jackson.core.base.ParserBase.getDoubleValue(ParserBase.java:713) 
    at org.elasticsearch.common.xcontent.json.JsonXContentParser.doDoubleValue(JsonXContentParser.java:180) 
    at org.elasticsearch.common.xcontent.support.AbstractXContentParser.doubleValue(AbstractXContentParser.java:184) 
    at org.elasticsearch.common.xcontent.support.AbstractXContentParser.doubleValue(AbstractXContentParser.java:174) 
    at org.elasticsearch.common.geo.builders.ShapeBuilder.parseCoordinates(ShapeBuilder.java:248) 
    at org.elasticsearch.common.geo.builders.ShapeBuilder.access$100(ShapeBuilder.java:46) 
    at org.elasticsearch.common.geo.builders.ShapeBuilder$GeoShapeType.parse(ShapeBuilder.java:744) 
    at org.elasticsearch.common.geo.builders.ShapeBuilder.parse(ShapeBuilder.java:291) 

ли кто-то хранит geoshape в ES с помощью свиньи и может нам помочь?

Спасибо!

+0

так получил ошибку при загрузке записей из inputFile.csv? можете ли вы разместить образец содержимого inputFIle.csv –

+0

выглядит как загрузка, если это может быть связано с тем, что у вас есть типы буксировки geoshape с ориентацией и один без –

+0

привет Я добавил некоторую информацию в свой первоначальный пост. Что касается вашего вопроса: Csv выглядит так: круг, ** координаты **, 100м. он имеет только одну строку. И в коде, который я приложил, я игнорирую ввод координат и пытаюсь вставить жестко закодированные координаты. Я думаю, что нагрузка была в порядке. В моей второй попытке (с TOMAP) я проигнорировал загрузку и попытался сохранить жестко закодированную форму ... Не могли бы вы немного объяснить ориентацию? Спасибо! – roh

ответ

0

Можете ли вы показать отображение для этого индекса? Некоторое время назад у меня были аналогичные проблемы с координатами в Pig - то, что я сделал это:

  1. в схеме ES Я определил местонахождение

    "location": { 
         "type": "geo_point" 
    } 
    
  2. генерироваться место в TOTUPLE (долгота, широта)

Надеюсь, что это поможет.