2015-05-19 9 views
0

В руководстве говорится, https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-geo-point-type.html#_mapping_optionsпроблемы с отображением elasticsearch

я мог бы использовать массив переменных широты/долготы, и сопоставляет его geo_point типа.

так вот мое текущее отображение:

{ 
    "zoek": { 
     "mappings": { 
     "geo": { 
      "properties": { 
       "country": { 
        "type": "string" 
       }, 
       "geonameid": { 
        "type": "string" 
       }, 
       "locatie": { 
        "type": "double" 
       }, 
       "name": { 
        "type": "string" 
       } 
      } 
     } 
     } 
    } 
} 

"Locatie" ссылается на массив из двух двухместных. [lat, lon].

Я хочу сопоставить это с переменной geo_point для выполнения запросов геоданных.

так я попытался это:

PUT /zoek/geo/_mapping 
{ 
    "geo" : { 
     "properties" : { 
      "locatie" : {"type" : "geo_point" } 
     } 
    } 
} 

и получил эту ошибку:

{ 
    "error": "MergeMappingException[Merge failed with failures {[mapper [locatie] of different type, current_type [double], merged_type [geo_point]]}]", 

"статус": 400}

Есть предложения?

Greets,

Dagmar.

ответ

1

В данном отображении типа (т.е. geo), вы не можете определить два поля с одинаковым именем (т.е. locatie), но другим типом (то есть один, как double и другое, как geo_point). Поскольку у вас уже есть имя поля locatie в вашем типе geo, вы не можете добавить новый с тем же именем, но вы можете определенно добавить другое с другим именем, например. location_geo.

Однако, я предлагаю изменить свое оригинальное отображение и заменить locatie (как double) с locatie (как geo_point). Если вы это сделаете, вам нужно будет повторно проиндексировать существующие данные, но это не может быть для вас.

+0

curl -XPUT http: // localhost: 9200/zoek/geo/0 -d '{"geonameid": "2743463", "name": "Den Oord", "locatie": [51.9708300, 5.2708300], «страна»: «NL»} '; –

Смежные вопросы