gpt4 book ai didi

python - elasticSearch批量的geo_point类型

转载 作者:行者123 更新时间:2023-12-03 02:14:09 24 4
gpt4 key购买 nike

大家好!
我正在尝试使用相应的python库中的bulk方法将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)
但是在这里我面临下一个错误:
'错误':{'类型':'illegal_argument_exception','原因':'映射器[位置]不能从类型[geo_point]更改为[float]'}
我还尝试将geo_point设置为 "location":{"lat": 41.12,"lon": -71.34 }或字符串 "location":"41.12,-71.34",但遇到一个错误,即输入数据不正确(相应地,“none”和“string”类型而不是上一条错误消息中的“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 - elasticSearch批量的geo_point类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63946125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com