Насыпной вкладыш для эластичного гнезда 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; }

}

1 ответ

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

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

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

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