不可用的类型' dict'尝试发送Elasticsearch地理查询时

时间:2016-01-06 10:05:27

标签: python elasticsearch

我试图通过以下代码段从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。我编写查询的方式有问题吗?

1 个答案:

答案 0 :(得分:1)

您正在dict内嵌set。删除外部花括号以解决此问题。该错误源于这样一个事实:集合,dicts不能包含不可用的集合,例如dict(感谢@Matthias)。

body=
        {
            "filtered" : {
                "query" : {
                    "field" : { "text" : "restaurant" }
                },
                "filter" : {
                    "geo_distance" : {
                        "distance" : "12km",
                        "location" : {
                            "lat" : 40,
                            "lon" : -70
                        }
                    }
                }
            }
        }