Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复';找不到地理点字段[pin.location]';_Python_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 如何修复';找不到地理点字段[pin.location]';

Python 如何修复';找不到地理点字段[pin.location]';,python,elasticsearch,Python,elasticsearch,所以我有一个地图点索引,我需要在里面放一些数据。但它似乎没有将我的数据注册为pin.location的有效输入 我已经试过了我能从中得到的一切 但这仍然不起作用 这是我设置索引的地方: 映射={ “映射”:{ “财产”:{ “pin”:{ “财产”:{ “地点”:{ “类型”:“地理点” } } }, “index.mapping.single_type”:False } } } es=Elasticsearch([{'host':'localhost','port':9200}]) 如果不存在

所以我有一个地图点索引,我需要在里面放一些数据。但它似乎没有将我的数据注册为pin.location的有效输入

我已经试过了我能从中得到的一切 但这仍然不起作用

这是我设置索引的地方:

映射={
“映射”:{
“财产”:{
“pin”:{
“财产”:{
“地点”:{
“类型”:“地理点”
}
}
},
“index.mapping.single_type”:False
}
}
}
es=Elasticsearch([{'host':'localhost','port':9200}])
如果不存在es.index(索引=“组映射”):
创建(index='groups\u map',body=mappings)
索引(index='groups\u map',id=data[“id”],doc\u type='groups\u map',body=data,request\u timeout=30)
以下是数据:

数据={
“pin”:{
“属性”:{“位置”:{
“类型”:“地理点”,
'lat':request.POST['source\u lat'],
“lon”:请求.POST['source_lon']}
}
},
“id”:instance.id,
}
这是我的查询数据,这只是一个包含lat和lon值的字典

query={
“布尔”:{
“必须”:{
“全部匹配”:{}
},
“过滤器”:{
“地理距离”:{
“距离”:“12公里”,
“pin.位置”:{
“lat”:数据[“lat”],
“lon”:数据[“lon”]
}
}
}
}
}
返回es.search(index=“groups\u map”,body={“query”:query},size=20)
这是我得到的全部错误:
elasticsearch.exceptions.RequestError:RequestError(400,“搜索阶段执行异常”,“找不到地理点字段[pin.location]”)

问题是您的数据不正确,需要删除
属性
键。您的数据应该如下所示

data = {
    "pin": {
         "location": {
               'lat': request.POST['source_lat'],
               'lon': request.POST['source_lon']
         }
    },
    "id": instance.id,
}

注意:在为新数据编制索引之前,您需要删除并重新创建索引。

@LinPy我收到以下错误:elasticsearch.exceptions.RequestError:RequestError(400,'mapper\u parsing\u exception',根映射定义有不受支持的参数:[pin:{properties={location={type=geo\u point}}}')``mappings={mappings:{pin{“properties”:{“location”:{“type”:“geo_point”}}}``我将数据更改为您所说的内容,但仍然收到消息:elasticsearch.exceptions.RequestError:RequestError(400,“搜索阶段执行异常”,“找不到地理点字段[pin.location]”)您需要先删除索引并重新创建它。我也使用这个curl-X delete“localhost:9200/groups\u map”完成了这项操作。好的,那么您能显示运行
curl-XGET“localhost:9200/groups\u map”时得到的结果吗
运行代码后?删除之前:{“组映射”:{“别名”:{},“映射”:{“属性”:{“id”:{“类型”:“long”},“pin”:{“属性”:{“位置”:{“属性”:{“lat”:{“类型”:“文本”,“字段”:{“关键字”:{“类型”:{“关键字”,“忽略上面的”:256}}},“lon”{“类型”:“文本”,“字段”:{“关键字”:{“关键字”:{“类型”:“{”上面的关键字”{“类型”}:“文本”,“字段”:{“关键字”:{“类型”:“关键字”,“忽略上面的内容”:256}}}}},“设置”:{“索引”:{“创建日期”:“156709163611”,“碎片数”:“1”,“副本数”:“1”,“uuid”:“Gp4hdzxGTpmINEbxGBDCUQ”,“版本”:{“已创建”:“7030199”),“提供的名称”:“组地图”}