geo_point elasticSearch 批量输入
geo_point type for elasticSearch bulk
大家好!
我正在尝试使用相应 python 库中的批量方法将 geo_point 数据放入 elasticSearch。
所以我定义并成功上传了下一个映射方案(我检查了该方案在 Kibana UI 中设置正确):
{'mappings': {
'properties': {
'location': {'type': 'geo_point'}
}
}
}
然后我尝试将数据放入下一个代码中(我阅读了 ES 手册并阅读了此处的示例 https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html):
from elasticsearch import Elasticsearch
data = [{"index": {"_index": "geo_index", "_type": "geo_type"}}, {"location": (41.12, -71.34)}]
elasetic_search_instance = Elasticsearch(....)
elasetic_search_instance.bulk(data)
但在这里我遇到了下一个错误:
'error':{'type':'illegal_argument_exception','reason':'mapper [location] cannot be changed from type [geo_point] to [float]'}
我还尝试将 geo_point 设为 "location":{"lat": 41.12,"lon": -71.34 }
或字符串 "location":"41.12,-71.34"
,但出现输入数据不正确的错误(“none”和“字符串" 相应地键入而不是先前错误消息中的“to [float]”。
我发现输入数据格式有误,但无法理解如何正确操作。
请告知我应该如何重新格式化输入数据格式。
提前致谢!
P.S> 对于所有其他数据类型,此上传脚本工作正常
那里有很多不一致之处,尤其是数据列表。这是您的用例的工作脚本:
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es_instance = Elasticsearch()
es_instance.indices.create('geo_index',
ignore=400,
body={
'mappings': {
'properties': {
'location': {
'type': 'geo_point'
}
}
}
})
data = [
{"location": (41.12, -71.34)}
]
actions = [
{
"_index": "geo_index",
"_source": point
} for point in data
]
success_count, errors = bulk(es_instance, actions)
print((success_count, errors))
大家好!
我正在尝试使用相应 python 库中的批量方法将 geo_point 数据放入 elasticSearch。 所以我定义并成功上传了下一个映射方案(我检查了该方案在 Kibana UI 中设置正确):
{'mappings': {
'properties': {
'location': {'type': 'geo_point'}
}
}
}
然后我尝试将数据放入下一个代码中(我阅读了 ES 手册并阅读了此处的示例 https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html):
from elasticsearch import Elasticsearch
data = [{"index": {"_index": "geo_index", "_type": "geo_type"}}, {"location": (41.12, -71.34)}]
elasetic_search_instance = Elasticsearch(....)
elasetic_search_instance.bulk(data)
但在这里我遇到了下一个错误: 'error':{'type':'illegal_argument_exception','reason':'mapper [location] cannot be changed from type [geo_point] to [float]'}
我还尝试将 geo_point 设为 "location":{"lat": 41.12,"lon": -71.34 }
或字符串 "location":"41.12,-71.34"
,但出现输入数据不正确的错误(“none”和“字符串" 相应地键入而不是先前错误消息中的“to [float]”。
我发现输入数据格式有误,但无法理解如何正确操作。 请告知我应该如何重新格式化输入数据格式。
提前致谢!
P.S> 对于所有其他数据类型,此上传脚本工作正常
那里有很多不一致之处,尤其是数据列表。这是您的用例的工作脚本:
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es_instance = Elasticsearch()
es_instance.indices.create('geo_index',
ignore=400,
body={
'mappings': {
'properties': {
'location': {
'type': 'geo_point'
}
}
}
})
data = [
{"location": (41.12, -71.34)}
]
actions = [
{
"_index": "geo_index",
"_source": point
} for point in data
]
success_count, errors = bulk(es_instance, actions)
print((success_count, errors))