«[geo_distance] неверно сформированный запрос, ожидаемый [END_OBJECT], но найденный [FIELD_NAME]»

#elasticsearch #elastic-stack

#elasticsearch #эластичный стек

Вопрос:

Я пытался создать поисковый запрос со значениями в 15 миллионов радиостанций и между 3 неделями. Я попытался выполнить этот запрос:

 "query": {
"bool": {
  "must": {
    "match_all": {}
  }
, "filter": [
  {
    "geo_distance": {
     
      "distance": "1000km",
      "geoLocation": {
        "lat": 31.966467334184614,
        "lon": 35.83242623178664
      }
    }
    ,
   "range": {
      "map_date": {
        "gte": "now-3w/w",
        "lte": "now/w"
      }
    }
    
  }
]
}}
 

Моя дата: map_date, а моя географическая точка — геолокация

Я получаю этот ответ :

 {
  "error" : {
    "root_cause" : [
      {
        "type" : "parsing_exception",
        "reason" : "[geo_distance] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line" : 18,
        "col" : 8
      }
    ],
    "type" : "x_content_parse_exception",
    "reason" : "[18:8] [bool] failed to parse field [filter]",
    "caused_by" : {
      "type" : "parsing_exception",
      "reason" : "[geo_distance] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
      "line" : 18,
      "col" : 8
    }
  },
  "status" : 400
}
 

Помогите мне, пожалуйста, выяснить, что я делаю неправильно

Ответ №1:

Ваша часть фильтра была неправильно сформирована, попробуйте :

 {
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": [
        {
          "geo_distance": {
            "distance": "1000km",
            "geoLocation": {
              "lat": 31.966467334184614,
              "lon": 35.83242623178664
            }
          }
        },
        {
          "range": {
            "map_date": {
              "gte": "now-3w/w",
              "lte": "now/w"
            }
          }
        }
      ]
    }
  }
}
 

В вашем массиве фильтров вы перечисляете список {}, взгляните на:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html