我正在写 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上使用?
答案 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