我可以在 Elasticsearch 7.x 中从 get geo_point 存储 geo_shape 吗?
Posted
技术标签:
【中文标题】我可以在 Elasticsearch 7.x 中从 get geo_point 存储 geo_shape 吗?【英文标题】:Can I store geo_shape from get geo_point in Elasticsearch 7.x? 【发布时间】:2019-11-15 07:31:20 【问题描述】:我的 ES 7.x 系统实时存储 geo_point
数据。
喜欢:
"id" : "john",
"age" : 26,
"geo" : "57.233, 129.11"
"address" : "Rovert Hall"
我想自动存储geo_shape
数据,实时获取这些存储的geo_point
数据。
然后,使用id
查询并获取geo_shape
数据以生成polygon
。我怎样才能使它成为可能?
如果不可能,我想得到任何类似这个目的的建议。
【问题讨论】:
【参考方案1】:实现此目的的一种方法是利用script
摄取处理器并动态创建geo_shape
(Point
类型)。
首先创建管道:
PUT _ingest/pipeline/point-to-shape
"processors": [
"script":
"source": """
def latLon = /,/.split(ctx.geo);
ctx.shape = [
"type" : "point",
"coordinates" : [latLon[1], latLon[0]]
];
"""
]
然后我们为您的文档编制索引,只需引用该管道,如下所示:
PUT index/_doc/1?pipeline?point-to-shape
"id" : "john",
"age" : 26,
"geo" : "57.233, 129.11",
"address" : "Rovert Hall"
然后生成的文档将是:
"geo" : "57.233, 129.11",
"address" : "Rovert Hall",
"shape" :
"coordinates" : [
" 129.11",
"57.233"
],
"type" : "point"
,
"id" : "john",
"age" : 26
PS:您还需要确保您的索引具有 shape
字段,该字段具有正确的 geo_shape
映射类型。
【讨论】:
也许这不是我的情况。我想用堆叠的geo_shape
数据制作多边形。
哦,你的意思是要从多个文档中索引的多个点构建一个多边形?
是的,我的意思是使用 user_id 从多个文档制作多边形
您能解释一下如何索引您的文档吗?
您可以使用 Logstash aggregate
过滤器。以上是关于我可以在 Elasticsearch 7.x 中从 get geo_point 存储 geo_shape 吗?的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes上的Elasticsearch 7.x设置
Elasticsearch 7.X 拼音分词器 pinyin 使用
Elasticsearch 7.x Nested 嵌套类型查询 ES 干货