【问题标题】:encoding field as geo_point while writing DStream to Elastic search将 DStream 写入弹性搜索时将字段编码为 geo_point
【发布时间】:2017-04-15 23:30:15
【问题描述】:

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

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 上使用?

【问题讨论】:

  • 您是否正确定义了索引类型? Tweet 是 JavaBean 吗?您的geo_point 字符串看起来如何?请提供更多信息。

标签: apache-spark elasticsearch kibana geopoints


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    编辑答案:

    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

    【讨论】:

    • 试过同样的事情。它的类型仍然显示为字符串并且无法在地图中使用它。然后我尝试在编写数据弹性搜索之前从java代码创建新索引,并在该索引中使用geo_point类型标记geo_point字段。然后开始转储数据 ES。它现在可以工作了。
    • 创建索引后,我们无法更改现有字段的映射。最佳实践是在开始将数据摄取到 elasticsearch 之前创建模板。 elastic.co/guide/en/elasticsearch/reference/current/…
    • Sindhu:感谢您的意见。跟着一样。
    猜你喜欢
    • 2018-08-08
    • 2016-01-12
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多