elasticsearch - Does Nest.ConnectionSettings.SetJsonSerializerSettingsModifier even work? -


here question. due project needs, have keep our dates within elasticsearch index in same format. we've tried next way -

            var connectionpool = new sniffingconnectionpool(nodelist);             var connectionsettings = new connectionsettings(connectionpool)                  .setjsonserializersettingsmodifier(                   m => m.dateformatstring = "yyyy-mm-ddthh:mm:ss.fffffffk")             // other configuration goes here 

but didn't work out. searching through es index, saw dates dropped trailing zeros ( 2015-05-05t18:55:27z insted of expected 2015-05-05t18:55:27.0000000z). neither did next option help:

            var connectionpool = new sniffingconnectionpool(nodelist);             var connectionsettings = new connectionsettings(connectionpool)                  .setjsonserializersettingsmodifier(m =>                     {                         m.converters.add(new isodatetimeconverter { datetimeformat = "yyyy'-'mm'-'dd't'hh':'mm':'ss.fffffffk"});                     })             // other configuration goes here 

with digging elasticclient @ run-time, i've found there contract resolver seems overrides settings:

          public class elasticcontractresolver : defaultcontractresolver           {               protected override jsoncontract createcontract(type objecttype)               {                   jsoncontract contract = base.createcontract(objecttype);                   ...                   if (objecttype == typeof(datetime) || objecttype == typeof(datetime?))                       contract.converter = new isodatetimeconverter();                   ...                   if (this.connectionsettings.contractconverters.hasany())                   {                       foreach (var c in this.connectionsettings.contractconverters)                       {                           var converter = c(objecttype);                           if (converter == null)                               continue;                           contract.converter = converter;                           break;                       }                   }                   return contract;              }           } 

so if have right, without specifying converter explicitly(via connection settings.addcontractjsonconverters()), json settings gone since isodatetimeconverter instantiated default settings rather ones i've passed through setjsonserializersettingsmodifier.

has run issue? or i'm missing something? in advance!

this how handled custom date format needs:

public class document {     [elasticproperty(dateformat = "yyyy-mm-dd", type = fieldtype.date)]     public string createddate { get; set; } }  client.index(new document {createddate = datetime.now.tostring("yyyy-mm-dd")}); 

my document in es

{     "_index": "indexname",     "_type": "document",     "_id": "au04kd4jnbkfiw7rp3gx",     "_score": 1,     "_source": {        "createddate": "2015-05-09"     } } 

hope you.


Comments