Как сохранить геоданные вasticsearch - PullRequest
0 голосов
/ 03 марта 2020

Как мне проиндексировать документ с данными ниже вasticsearch (geo datatype)?

<west>5.8663152683722</west>
<north>55.0583836008072</north>
<east>15.0418156516163</east>
<south>47.2701236047002</south>

Я пробовал geo_point и он работает для lon и lat, не зная, как сохранить эти данные. любая помощь высоко ценится.

1 Ответ

1 голос
/ 04 марта 2020

Вам нужно будет использовать geo_shape datatype и преобразовать ваши XML (я предполагаю) полуточки в строку или многоугольник перед син c.


Я собираюсь go с многоугольником здесь. Давайте визуализируем обычные кардинальные направления :

             North (+90)
               |
(-180) West  ——+—— East (+180)
               |
             South (-90)

geo_shape ожидает Geo JSON -подобные входы, поэтому вам понадобятся пять координатных точек, первая и последняя из которых идентичны (согласно Geo JSON spe c).

Следовательно, заимствуя у Turf JS и двигаясь снизу слева против часовой стрелки,

const lowLeft = [west, south];
const topLeft = [west, north];
const topRight = [east, north];
const lowRight = [east, south];

return 
[ 
  [
    lowLeft,
    lowRight,
    topRight,
    topLeft,
    lowLeft
  ]
]

Наконец, давайте создадим наш индекс и добавим ваши числа в

PUT /example
{
  "mappings": {
    "properties": {
      "location": {
        "type": "geo_shape"
      }
    }
  }
}
POST /example/_doc
{
  "location":{
    "type":"polygon",
    "coordinates":[
      [
        [
          5.8663152683722,
          47.2701236047002
        ],
        [
          15.0418156516163,
          47.2701236047002
        ],
        [
          15.0418156516163,
          55.0583836008072
        ],
        [
          5.8663152683722,
          55.0583836008072
        ],
        [
          5.8663152683722,
          47.2701236047002
        ]
      ]
    ]
  }
}

Затем убедитесь, что центр вашего квадрата, если он действительно находится внутри вашего индексированного многоугольника:

GET example/_search
{
  "query": {
    "geo_shape": {
      "location": {
        "shape": {
          "type": "point",
          "coordinates": [
            10.45406545999425,
            51.1642536027537
          ]
        },
        "relation": "intersects"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...