SQL-запрос Elasticsearch невозможен

У меня есть экземпляр ElasticSearch, работающий локально, и он отлично работает. Теперь я хочу запросить индекс с помощью SQL. Я пробовал это с помощью NodeJS-Client (v7) и обычно через REST-Api. Вызов отдыха:

POST http://localhost:9200/_sql
{
   "body": {
       "query": "DESCRIBE indexname"
   }
}

И через nodeJS:

elasticClient.sql.query({
    format: "json",
    body: {
        query: "DESCRIBE indexname"
    }
}).then(result => {
    console.log(result);
}).catch(reject => {
    console.log(reject);
});

Оба возвращают одну и ту же ошибку:

Неверный HTTP-метод для uri [/ _sql] и метода [POST], разрешен: [GET, HEAD, PUT, DELETE] статус: 405

Кто-нибудь может помочь? Ваше здоровье!


person m_____0    schedule 22.07.2019    source источник
comment
Та же проблема с бонсай ... но пока ничего не нашел :-(   -  person tiefenb    schedule 08.11.2019
comment
Какую версию ES вы используете? Я подозреваю, что вы запускаете JS-клиент v7 против кластера v6   -  person Val    schedule 08.11.2019
comment
Можете ли вы запустить тот же POST _sql запрос с curl или чем-то еще, кроме этого клиентского кода? (спрашивается, потому что это сообщение об ошибке типично для установки, где либо x-pack не установлен, либо ES-SQL не включен). И это помогает узнать точную версию ES сервера. Кроме того, тело POST запроса на _sql должно быть {"query": "DESCRIBE indexname"}, не знаю, почему у вас там body.   -  person Andrei Stefan    schedule 09.11.2019
comment
@tiefenb не могли бы вы подробнее рассказать о заданных выше вопросах? Заинтересованность в публикации и, кроме того, предложение вознаграждения за нее, но не готовность помочь в расследовании, не очень продуктивны.   -  person Andrei Stefan    schedule 13.11.2019


Ответы (2)


Пытаться

GET http://localhost:9200/_sql
{
   "body": {
       "query": "DESCRIBE indexname"
   }
}
person Ryabchenko Alexander    schedule 12.11.2019
comment
Запрос GET не может иметь тела - person Alexander; 10.04.2020
comment
и все же он используется таким образом, например в _search конечной точке - person Jakub Licznerski; 18.06.2020

Эта проблема обычно вызвана несовместимостью вашего модуля elastic / elasticsearch. Какая у вас версия ES? Попробуйте обновить версию NodeJS до версии ES.

Проверить совместимость можно здесь.

https://www.npmjs.com/package/@elastic/elasticsearch

person Ke Zhu    schedule 14.11.2019