如何将地理数据添加到Elasticsearch查询(elasticsearch 6.4)?

时间:2018-10-20 10:51:38

标签: elasticsearch kibana geo

请帮助一个完整的新手!

我有一个现有的elasticsearch索引(它是由一个从数据库填充该索引的插件自动生成的),并且我试图在地理上可视化某些字段(使用Kibana的坐标图)。该索引本身没有地理位置数据。它有一个名为“ alloc_node”的字段,我知道数据集中仅存在少数“ alloc_node”,并且具有其地理坐标。

来自索引的数据如下所示(在Kibana的“发现”选项卡中,被截断了):

t  _id          MV0JkWYBmQ9JhdzgNzwI
t  _index           slurm
#  _score            - 
t  _type            jobcomp
t  alloc_node           mace

例如我知道“王牌”位于纽约市,纬度= 40.73,lon = -73.94。我只有5条这样的记录,我必须将节点映射到geo。

我是否必须更新索引以使其可视化,还是可以通过查询添加额外的字段?怎么样?什么是最有效的?目前该指数并不大(但实际产量可能是)。

我尝试阅读文档,但是我对ES 6.x中不推荐使用的Mapping类型感到困惑,而我尝试过的愚蠢的事情也没有用。我觉得对于有更多经验的人来说,这应该是一件容易的事情。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

要在Kibana中可视化,您必须在映射中输入“ geo_point”类型。 在映射中创建此类字段的简单方法是:

PUT /slurm
{
  "mappings": {
    "default": {
      "properties": {
        "your_geo_location_field": {
          "type": "geo_point"
        }
      }
    }
  }
}

然后,当您将文档推入索引(索引)到索引中时,“ your_geo_location_field”字段应具有“ lat”和“ lon” float字段,或包含两个字段的数组,例如,这是一个有效的对象:

{ 
  "geolocation": {
    "lat": "40.71476752",
    "lon": "-74.01280024"
  }
}

“地理位置”是此类字段的示例。

您需要做的就是使用上述映射创建另一个索引, 将当前索引重新索引为新创建的索引(所有文档均包含有效对象),然后Kibana将在该字段顶部为您提供可视化效果。