繁体   English   中英

Python ElasticSearch查询错误

[英]Python ElasticSearch query error

我已经使用映射查询在ElasticSearch中执行搜索,并且如下所示工作正常。

{
                "query": {
                    "bool" : {
                        "must" : {
                            "match_all" : {}
                        },
                        "filter" : {
                            "geo_distance" : {
                                "distance" : "{}mi".format(list_info.radius_b),
                                'location': {
                                    "lat": zip.lat,
                                    "lon": zip.lng
                                }
                            }
                        },
                    },
                },
                "sort" : [
                    {
                        "_geo_distance" : {
                            'location': {"lat": zip.lat,
                                        "lon": zip.lng},
                            "order" : "asc",
                            "unit" : "mi",
                            "mode" : "min",
                            "distance_type" : "sloppy_arc"
                        }
                    }
                ],
                "from": 0,
                "size": 0,
            }

但是,即使我添加了“条款”,我也遇到了错误:TransportError(400,u'parsing_exception',u'[term]格式错误的查询,预期为[END_OBJECT],但找到了[FIELD_NAME]')

{
                "query": {
                    "bool" : {
                        "must" : {
                            "match_all" : {}
                        },
                        "filter" : {
                            "geo_distance" : {
                                "distance" : "{}mi".format(list_info.radius_b),
                                'location': {
                                    "lat": zip.lat,
                                    "lon": zip.lng
                                }
                            }
                        },
                    },
                    "term" : { "status" : "approved" }
                },
                "sort" : [
                    {
                        "_geo_distance" : {
                            'location': {"lat": zip.lat,
                                        "lon": zip.lng},
                            "order" : "asc",
                            "unit" : "mi",
                            "mode" : "min",
                            "distance_type" : "sloppy_arc"
                        }
                    }
                ],
                "from": 0,
                "size": 0,
            }

您的新term查询必须位于bool/filter查询内:

{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": [
        {
          "geo_distance": {
            "distance": "{}mi".format(list_info.radius_b),
            "location": {
              "lat": zip.lat,
              "lon": zip.lng
            }
          }
        },
        {
          "term": {
            "status": "approved"
          }
        }
      ]
    }
  },
  "sort": [
    {
      "_geo_distance": {
        "location": {
          "lat": zip.lat,
          "lon": zip.lng
        },
        "order": "asc",
        "unit": "mi",
        "mode": "min",
        "distance_type": "sloppy_arc"
      }
    }
  ],
  "from": 0,
  "size": 0
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM