Обновление до Elastic Search NEST 7.0.1 нарушает код, который проверяет, существует ли индекс

После обновления Elastic Search NEST с 7.0.0-alpha2 до 7.0.1 я больше не могу использовать метод IndexExistsAsync в Nest.ElasticClient.

Согласно документации, метод удален и является критическим изменением, поэтому я изменил вызов ElasticClient.Indices.ExistsAsync следующим образом:

Старый код:

var existsResponse = await _elasticClient.IndexExistsAsync(model.Name);

Новый код:

var existsResponse = await _elasticClient.Indices.ExistsAsync(model.Name);

И с новым кодом я получаю следующий ответ, который не очень помогает в поиске и устранении проблемы:

Invalid NEST response built from a successful (404) low level call on HEAD: /12-e449636ee7e1eb1343414698c95ce1e1

Audit trail of this API call:
- [1] HealthyResponse: Node: http://localhost:9200/ Took: 00:00:00.1208228

Request:

Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.

Response:

Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.

Настройка connectionSettings.DisableDirectStreaming(true); не помогло и я получаю точно такой же ответ.

Любая помощь высоко ценится.

2 ответа

Я думаю, что сообщение, которое вы видите, говорит вам все.

Invalid NEST response built from a successful (404) low level call on HEAD: /12-e449636ee7e1eb1343414698c95ce1e1 

response built from a successful - вызов asticsearch был успешным, но статус 404 (не существует) был возвращен и сопоставлен с existsResponse.Exists который false в этом случае. Дополнительная информация о запросе / ответе не прилагается, поэтому вы видите:

Request:

Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.

Response:

Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.

Такое же поведение при попытке сделать это через кибану:

ОБНОВИТЬ:

При тестировании следующего кода с asticsearch 7.2.0 и NEST 7.0.1

var client = new ElasticClient(connectionSettings);              

await client.Indices.CreateAsync("documents");                   
var exists = await client.Indices.ExistsAsync("documents");      
Console.WriteLine($"Index created, exists?: {exists.Exists}");   

await client.Indices.DeleteAsync("documents");                   
exists = await client.Indices.ExistsAsync("documents");          
Console.WriteLine($"Index deleted, exists?: {exists.Exists}");   

печать

Index created, exists?: True
Index deleted, exists?: False

Надеюсь, это поможет.

Та же проблема здесь. После обновления до Nest 7 (как 7.0.0, так и 7.0.1) для кластера ElasticSearch с версией 7.2.0 мы получаем следующее сообщение:

Неверный ответ NEST, созданный из-за неудачного (502) низкоуровневого вызова на HEAD: /leads_2019.07

Контрольный журнал этого вызова API:

  • [1] BadResponse: Узел: http://xxx:9200/ Взял: 00: 00: 00.1931249

    OriginalException: Elasticsearch.Net.ElasticsearchClientException: не удалось выполнить запрос. Звоните: Код состояния 502 от: HEAD /leads_2019.07

Мы получаем ту же ошибку против кластера с версией 6.8.1

Другие вопросы по тегам