Добавление документа, содержащего поля даты, с помощью ElasticSearch.NET PostData.String создаст поля даты, напечатанные как строки - PullRequest
0 голосов
/ 29 августа 2018

Я хочу добавить документ в эластичный поиск, используя ElasticSearch.NET nuget.

Работает нормально, но только если я создаю объект PostData, используя PostData.MultiJson. Если я попробую то же самое, используя PostData.String, документ будет добавлен, но при создании индекса (первое сообщение) поля даты создаются как строки, в отличие от первого метода, где поля даты создаются как * 1007. *.

Следующий пример иллюстрирует:

public void AddJsonWithDate()
{

    var connectionSettings = new ConnectionConfiguration(new Uri(_elasticSearchHost));
    var esClient = new ElasticLowLevelClient(connectionSettings);
    var obj = new Demo { N1 = 21312, S1 = "test", Date = DateTime.Now };

    /*
        indexName, PostData.String(postDataJson)
        indexName, PostData.MultiJson(new object[] { postDataJson })
     */

    var jsonStr = WriteFromObject<Demo>(obj);
    var postDataStr = PostData.String(jsonStr);
    //var postDataObj = PostData.MultiJson(new object[] { obj });
    //var response = esClient.Index<StringResponse>("myindex1", "_doc", postDataObj); /* Date field is created as DATE in the document type */
    var response = esClient.Index<StringResponse>("myindex2", "_doc", postDataStr); /* Date field is created as STRING in the document type */
}

public string WriteFromObject<T>(T obj) where T : class, new()
{
    //Create a stream to serialize the object to.
    MemoryStream ms = new MemoryStream();

    // Serializer the User object to the stream.
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
    ser.WriteObject(ms, obj);
    byte[] json = ms.ToArray();
    ms.Close();
    return Encoding.UTF8.GetString(json, 0, json.Length);
}


public class Demo
{
    public int N1 { get; set; }
    public string S1 { get;  set; }
    public DateTime Date { get; set; }
}

В настоящее время мое приложение отправляет jsons в виде строк. Как мне решить эту проблему?

...