Неверный ответ NEST на запрос Elasticsearch - неверное форматирование документа - PullRequest
0 голосов
/ 17 марта 2020

Я начинаю работу с Elasticsearch NEST API (я видел этот пост, связанный ), и я пытаюсь выяснить, что может быть не так с моим запросом / объектом.

Вот мой объект документа:

public class Jenson_Elastic_Log
    {
        public string exception { get; set; }
        public string http_context { get; set; }

        [JsonConverter(typeof(MyDateTimeConverter))]
        public DateTime log_date { get; set; }
        public string log_level { get; set; }
        public string logger { get; set; }
        public string message { get; set; }
        public string server_name { get; set; }
    }

Код, который я использую для запроса индекса:

 var settings = new ConnectionSettings(new Uri("http://localhost:9200/")).DefaultIndex("jenson_logging");

        var client = new ElasticClient(settings);

        var testLog = new Jenson_Elastic_Log
        {
            exception = "test",
            http_context = "local",
            log_date = DateTime.Now,
            log_level = "High",
            logger = "testing",
            message = "test push log",
            server_name = "localhost"
        };


        var indexResponse = client.IndexDocument(testLog);
        var asyncIndexResponse =  client.IndexDocument(indexResponse);

Это продолжает выдавать ошибку: "{ Неверный ответ NEST, созданный из неудачного (400) низкоуровневого вызова на POST: / jenson_logging / _doc} "(ошибка возникает с / без даты / времени):

Вот как выглядит мой json объект для индекса, к которому я пытаюсь выполнить запрос:

https://jsoneditoronline.org/#left = cloud.ff3388575dc945688a446884bfcf1814

Любая помощь в получении запросов к этому объекту будет принята с благодарностью.

1 Ответ

0 голосов
/ 18 марта 2020

My подозрение - это индекс "jenson_logging" содержит существующее отображение do c, отличное от "_doc", что приводит к 400 ошибочным запросам при попытке проиндексировать документ с помощью 7.x клиент. Вы должны быть в состоянии получить более подробную информацию о том, что ошибка, посмотрев на indexResponse.DebugInformation.

Клиент 7.x не предоставляет способ отправить любую другую команду c type, отличный от "_doc", потому что типы устарели в Elasticsearch и будут удалены в будущем . Другие системы, индексирующие Elasticsearch , могут по-прежнему устанавливать другой тип do c в 7.x, отличный от "_doc", но я бы настоятельно рекомендовал изменить их на использование "_doc" в качестве он будет подготовлен в случае, если в будущем кластер будет обновлен до новой основной версии.

Кроме того, JsonNetSerializer необходимо подключить для поддержки [JsonConverter(typeof(MyDateTimeConverter))] на POCO.

...