Elasticsearch расстояние запроса исключение - PullRequest
0 голосов
/ 31 августа 2018

Я написал следующий запрос для сортировки по ближайшему пользователю, а затем по оставшимся пользователям, но когда я запускаю этот запрос на kibana, он выдает исключение , и я не знаю, в чем заключается ошибка

Запрос

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "type": "user"
          }
        }
      ],
      "filter": {
        "geo_distance": {
          "distance": "1000km",
          "location": {
            "lat": 24.71532,
            "lon": 46.66479
          }
        }
      }
    },
    "sort": [
      {
        "_geo_distance": {
          "location": {
            "lat": 24.71532,
            "lon": 46.66479
          },
          "order": "asc",
          "unit": "km",
          "distance_type": "plane"
        }
      }
    ]
  }
}

Exception

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line": 21,
        "col": 5
      }
    ],
    "type": "parsing_exception",
    "reason": "[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line": 21,
    "col": 5
  },
  "status": 400
}

Я нашел этот код на официальном сайте упругого поиска. когда я запускаю этот запрос без фильтра сортировки, этот запрос работает, но когда я добавляю фильтр сортировки, U получает исключение.

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 31 августа 2018

Раздел sort должен идти на том же уровне, что и раздел query, а не внутри него:

{
  "sort": [
    {
      "_geo_distance": {
        "location": {
          "lat": 24.71532,
          "lon": 46.66479
        },
        "order": "asc",
        "unit": "km",
        "distance_type": "plane"
      }
    }
  ],
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "type": "user"
          }
        }
      ],
      "filter": {
        "geo_distance": {
          "distance": "1000km",
          "location": {
            "lat": 24.71532,
            "lon": 46.66479
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...