How to index custom json with C# object using NEST

I am new to elastic search and we need to migrate from mongodb to elastic. we used

public class Book
        public string Id { get; set; }

        public string ApplicationId { get; set; }

        public string UserName { get; set; }

        public string UserId{ get; set; }

        public DateTime CurrDate { get; set; }

        public int Counter { get; set; }

        public DateTimeOffset CurrDateOffset { get; set; }

        public BsonDocument Metadata { get; set; }

BsonDocument support custom json object. so I can insert an object with pre-define property & custom json string

As a example

var basonDoc = BsonSerializer.Deserialize<BsonDocument>(@"{
   ""emp-name"":""Kasun kalhara"",
   ""emp-position"":""Associate Developer""
var indexResponse = await elasticClient.IndexDocument(new BookElasticSearch
                Id = Guid.NewGuid().ToString(),
                UserId = "",
                UserName = "test test Silva",
                CurrDate = DateTime.Now,
                CurrDateOffset = DateTimeOffset.Now,
                Counter = -1,
                Metadata = basonDoc

How can I do that using NEST or any way in .net core