Копирование координат в поле типа geo_point с использованием copy_to в Elasticsearch - PullRequest
1 голос
/ 08 апреля 2020

Я пытаюсь работать с геокодом вasticsearch, у меня есть индекс, имеющий два разных уникальных поля: широту и долготу. Оба хранятся как двойные, я хочу использовать функцию копирования в функциюasticsearch и скопировать оба значения поля в третье поле, которое будет иметь тип geo_point. Я пытался сделать это, но это не работает, как задумано.

{
  "mappings": {
    "properties": {
      "unique_id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "location_data": {
        "properties": {
          "latitude": {
            "type": "float",
            "copy_to": "last_location"
          },
          "longitude": {
            "type": "float",
            "copy_to": "last_location"
          },
          "last_location": {
            "type": "geo_point"
          }
        }
      }
    }
  }
}

Когда я индексирую образец документа, такой как

{
  "unique_id": "12345_mytest",
  "location_data": {
    "latitude": 37.16,
    "longitude": -124.76
  }
}

В новом отображении вы увидите, что поле last_location, которое должно быть внутри объекта location_data, также заполнено на уровне root другим типом данных, отличным от geo_point.

{
    "mappings" : {
      "properties" : {
        "last_location" : {
          "type" : "float"
        },
        "location_data" : {
          "properties" : {
            "last_location" : {
              "type" : "geo_point",
              "store" : true
            },
            "latitude" : {
              "type" : "float",
              "copy_to" : [
                "last_location"
              ]
            },
            "longitude" : {
              "type" : "float",
              "copy_to" : [
                "last_location"
              ]
            }
          }
        },
        "unique_id" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword"
            }
          }
        }
      }
    }
  }

И, кроме того, когда я запрашиваю поле, я не могу получить ожидаемый результат.

Это не работает, любые другие идеи или способ сделать это. Я знаю, что могу сделать это из самого источника или изменив данные перед индексацией, но мне не приходится делать это сразу. Любой другой способ, изменяя отображение, приветствуется. Заранее спасибо за любые указатели, чтобы сделать это.

Спасибо, Ашит

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