Использовать тип данных geo_point для поля в _reindex api - PullRequest
0 голосов
/ 28 марта 2019

У меня есть индекс, который содержит два поля: долгота и широта, которые хранятся как float. Я хочу создать новый индекс и скопировать данные из первого, но с разными сопоставлениями. Я использую reindex api с эластичными процессорами, которые могут переименовывать поля и предоставлять им разные типы данных. Когда я пытаюсь создать поле с типом "geo_point", это не удается.

"type": "parse_exception",
       "reason": "[type] type [geo_point] not supported, cannot convert field.",

но когда я создаю новый индекс, я могу создать поле с типом "geo_point". я пробовал разные обходные пути, но в документации сказано, что с гео-запросами вы можете использовать только тип "geo_point". есть ли решение?

{
  "description": "test pipe",
  "processors": [
    {
      "convert": {
        "field": "location", 
        "type": "geo_point"
      }
    }
  ]
}

добавлено определение трубы.

1 Ответ

0 голосов
/ 29 марта 2019

ОК, допустим, что ваше текущее отображение индекса выглядит следующим образом:

PUT oldindex
{
  "mappings": {
    "doc": {
      "properties": {
        "latitude": {
          "type": "float"
        },
        "longitude": {
          "type": "float"
        }
      }
    }
  }
}

Вам необходимо создать новый индекс с соответствующим отображением, как показано ниже

PUT newindex
{
  "mappings": {
    "doc": {
      "properties": {
        "location": {
          "type": "geo_point"
        }
      }
    }
  }
}

И затем, вы можете просто использовать reindex API , чтобы скопировать старый индекс в новый с некоторыми дополнительными сценариями для создания поля местоположения:

POST _reindex
{
  "source": {
    "index": "oldindex",
  },
  "dest": {
    "index": "newindex"
  },
  "script": {
    "source": "ctx._source.location = ['lat': ctx._source.latitude, 'lon': ctx._source.longitude]; ctx._source.remove('latitude'); ctx._source.remove('longitude'); "
  }
}

И вы готовы идти споле местоположения в вашем новом блестящем индексе!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...