объемная вставка для elasticsearch гнезда 5.x

Я пытался использовать функцию массовой вставки, но каждый раз, когда я ее использую, появляется ошибка отображения. Изменилось ли объявление функции массовой вставки с гнезда 1.x на гнездо 5.x, потому что в документации гнезда 5.x я не нашел функцию .bulk(). Пожалуйста, предложите

Код для массовой вставки:

        public void bulkInsert(List<BaseData> recordList, List<String> listOfIndexName)
    {

          BulkDescriptor descriptor = new BulkDescriptor();
            descriptor.Index<BaseData>(op => op
                .Document(recordList[j])
                .Index(listOfIndexName[j])

               );


        }

        var result = clientConnection.Bulk(descriptor);


    }

Мой список данных, которые я передаю, выглядит примерно так:

[ElasticsearchType(IdProperty = "number")]


class TicketData : BaseData
{        
    //[ElasticProperty(Index = FieldIndexOption.NotAnalyzed, Store = true)]


    [Date(Name = "sys_updated_on", Store = true)]
    public DateTimeOffset sys_updated_on { get; set; }


      [Text(Name = "number", Store = true)] 
    public override string  number { get; set; }


   [Text(Name = "incident_state", Store = true)]
    public string incident_state { get; set; }


  [Text(Name = "location", Store = true)]
    public string location { get; set; }


   [Text(Name = "assigned_to", Store = true)]
    public string assigned_to { get; set; }



[Text(Name = "u_knowledge_id", Store = true)]
    public string u_knowledge_id { get; set; }


    [Text(Name = "u_knowledge_id.u_process_role", Store = true)]
    public string u_knowledge_id_u_process_role { get; set; }

}


person Nilanjana    schedule 20.04.2017    source источник
comment
А ошибка есть?   -  person Andrei Stefan    schedule 20.04.2017
comment
Это решение может вам помочь. stackoverflow.com/ вопросов/22017858/ Или вы можете обратиться к этому, по этой ссылке вы можете получить более общее представление о массовой вставке, спасибо!   -  person Unknown_Coder    schedule 20.04.2017
comment
вы выглядите так, как будто вам не хватает кода в вашем примере, например. что такое descriptor? не могли бы вы отредактировать свой вопрос, чтобы добавить эту деталь, пожалуйста. Кроме того, что такое ошибка отображения? какую ошибку возвращает Elasticsearch? как выглядит массовый запрос json?   -  person Russ Cam    schedule 20.04.2017
comment
Я добавил дескриптор Russ. Все равно ошибка та же   -  person Nilanjana    schedule 20.04.2017
comment
Ошибка примерно такая: [0] {индекс возвращен 400 _index: datd.ticketlog01-2017.15 _type: basedata _id: IN1 _version: 0 ошибка: Тип: недопустимый_аргумент_исключение Причина: не удается объединить необъектное сопоставление [u_knowledge_id] с объектом сопоставление [u_knowledge_id] CausedBy: } Nest.BulkResponseItemBase {Nest.BulkIndexResponseItem}   -  person Nilanjana    schedule 20.04.2017


Ответы (1)


Кажется, что NEST не может определить правильный тип вашего объекта, потому что вы указываете общий тип BaseData, тогда как фактический тип — TicketData. Вы должны указать фактический тип объекта, который вы хотите индексировать. Поскольку в вашем списке могут быть разные типы, вы можете получить фактический тип, используя метод GetType():

descriptor.Index<BaseData>(op => op
    .Document(recordList[j])
    .Index(listOfIndexName[j])
    .Type(recordList[j].GetType())
);

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

person Random    schedule 20.04.2017
comment
Ошибка DebugInformation "Invalid NEST response built from a successful low level call on POST: /_bulk\r\n# Invalid Bulk items:\r\n operation[0]: index returned 400 _index: datd.ticketlog01-2017.15 _type: ticketdata _id: IN1 _version: 0 error: Type: illegal_argument_exception Reason: \"Can't merge a non object mapping [u_knowledge_id] with an object mapping [u_knowledge_id]\" CausedBy: \"\"\r\n operation[1]: index returned 400 _index: datd.ticketlog01-2016.30 _type: ticketdata - person Nilanjana; 26.04.2017
comment
Похоже, тип поля конфликтует с другим типом объекта. Какие еще карты у вас есть? - person Random; 26.04.2017