У меня 20000 файлов geojson в этом формате:
{
"geometry": {
"type": "Polygon",
"coordinates": [
[
[long,lat],
[long,lat],
[long,lat],
[long,lat],
[long,lat]
]
]
},
Все сопоставления, которые я пытался выполнить с помощью geo_shape и geo_point, либо не отображаются в Кибане, либо отображаются в Кибане, но без данных. Как лучше всего сопоставить это для индексации многих файлов? (Если нет хорошего способа, моей следующей мыслью было создать центральную точку для каждого файла, если я не могу использовать все координаты. Возможно, возьмем первый массив long, lat и сделаем центральную точку geo_point для каждого файла json. Не уверен, как пойти об этом тоже)
Это отображение по умолчанию из ES, когда я индексирую, ничего не меняя:
{
"indexname" : {
"mappings" : {
"my_type" : {
"properties" : {
"geometry" : {
"properties" : {
"coordinates" : {
"type" : "float"
},
"type" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
},
ОБНОВЛЕНИЕ Вот мое новое сопоставление:
{
"indexname" : {
"mappings" : {
"my_type" : {
"properties" : {
"geometry" : {
"type" : "geo_shape",
"tree" : "quadtree",
"precision" : "1.0m"
},
"id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
Однако, когда я иду в кибану, я все еще получаю сообщение об ошибке при попытке визуализации на расширенной тайловой карте:
No Compatible Fields: The "indexname" index pattern does not contain any of the following field types: geo_point
EDIT2 Это моя команда для создания сопоставления:
curl -XPUT "http://localhost:9200/indexname" -d "{\"mappings\" : {\"my_type\" : {\"properties\" : {\"geometry\" : {\"type\":\"geo_shape\", \"tree\": \"quadtree\", \"precision\": \"1m\"}}}}}"
Я индексирую свои файлы, просматривая и отправляя почтовый запрос:
r = requests.post(url_of_index, data=file(jsonfiles).read())
Когда я пытаюсь изменить тип на geo_point, а затем проиндексировать свои файлы, я сталкиваюсь с исключением парсера сопоставителя.