将DStream写入弹性搜索时将字段编码为geo_point

时间:2017-04-15 23:30:15

标签: apache-spark elasticsearch kibana geopoints

我正在写 JavaDStream 包含类型为Tweet的对象,从spark到弹性搜索,使用方法 JavaEsSparkStreaming.saveToEs 。以下是我的推文类的定义。

public class Tweet implements Serializable{

String longitude;
String latitude;
String sentiment;
String text;
String post_date;
String geo_point;

在geo_point中,我附加经度,纬度。

当我将此DStream写入ES时,字段geo_point的类型显示为文本,我无法在Kibana上使用它来显示地理地图上的数据。我设置了es.index.auto.create = true。如何将该字段的类型转换为geo_point,以便可以在Kibana Map上使用?

2 个答案:

答案 0 :(得分:1)

现在解决了。在使用Java代码在ES中转储数据并将字段类型标记为geo_point之前创建索引。然后开始在ES中转储数据。现在我可以将该字段用于map,因为type是geo_point。

答案 1 :(得分:0)

编辑回答:

Elasticsearch数据类型映射无法应用于现有索引。我们应该在摄取特定索引的数据之前创建ES模板。

索引模板:

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

为Kibana定义地理位置类型:

https://www.elastic.co/guide/en/elasticsearch/reference/5.3/geo-point.html