I am trying unsuccessfully to se the c# client to bluk insert data into elasticsearch. the client connects successfully, however I now have an issue with the following code:
var settings = client.ElasticsearchClientSettings;
settings.DefaultIndices.Add(typeof(HardwareData), "metrics-hardware-pristem"); var data = new HardwareData { Id = 1, System_ErrorLevel = 1, timestamp = DateTime.Now }; var timestampMemberInfo = typeof(HardwareData).GetMember("timestamp")[0]; client.ElasticsearchClientSettings.PropertyMappings.Add(timestampMemberInfo, new PropertyMapping() { Name = "@timestamp" }); var r2 = await client.IndexAsync(new IndexRequest<HardwareData>() { Document = data }); Console.WriteLine($"success={r2.IsSuccess()} : {r2.Id} => {r2.Result},{r2.DebugInformation}");
The output of DebugInformation is:
{"type":"illegal_argument_exception","reason":"data stream timestamp field [@timestamp] is missing"}},"status":400}
From what I see there is lots of documentation on the NEST api, but very little on the current api, I was unable to find a working example.
What is the easiest way to map a property to a field (particularly the timestamp, since others should map automatically because they have the same name, I cannot use @timestamp as the name) ?
Additionally I tried using json attributes on the HardwareData class to specify the mapping, but that also failed with the same error.