2017-02-21 231 views
0

我已经使用映射查询在ElasticSearch中执行搜索,并且它可以正常工作,如下所示。Python 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 '[任期]畸形查询,预期[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, 
      } 

回答

3

您的新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 
} 
+0

是你能够使这项工作? – Val