我试图通过以下代码段从ES中获取一些地理数据:
result = es.search(
index="loc",
body={
{
"filtered" : {
"query" : {
"field" : { "text" : "restaurant" }
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}
}
)
但由于以下错误,查询无法成功:
"lon" : -70
TypeError: unhashable type: 'dict'
位置字段已正确映射到geo_point类型,查询来自official examples。我编写查询的方式有问题吗?
答案 0 :(得分:1)
您正在dict
内嵌set
。删除外部花括号以解决此问题。该错误源于这样一个事实:集合,dicts不能包含不可用的集合,例如dict(感谢@Matthias)。
body=
{
"filtered" : {
"query" : {
"field" : { "text" : "restaurant" }
},
"filter" : {
"geo_distance" : {
"distance" : "12km",
"location" : {
"lat" : 40,
"lon" : -70
}
}
}
}
}