gpt4 book ai didi

c# - Elasticsearch C#datetime获取日期时间默认值

转载 作者:行者123 更新时间:2023-12-02 23:14:38 25 4
gpt4 key购买 nike

当我尝试从Elasticsearch提取数据时,我目前遇到了问题。

我有一个时间戳值,其保存如下:

Timestamp = DateTime.UtcNow;

而且Timestamp属性在我的对象中看起来像这样
public DateTime Timestamp { get; }

使用Kibana查看数据时,时间戳记具有以下值:

时间戳记:2019年6月19日,16:29:24.997

当我尝试使用以下代码检索数据时:
var searchResponse = await elastic.SearchAsync<SupplierPricelistStatistic>(s => s
.From(0)
.Take(2000)
.Query(q => +q
.Match(m => m
.Field(f => f.SupplierId)
.Query(id.ToString())
)
)
.Scroll("10m")
).ConfigureAwait(false);

并像这样循环遍历:
var resultList = new List<SupplierPricelistStatistic>();

while (searchResponse.Documents.Any())
{
foreach (var doc in searchResponse.Hits)
{
resultList.Add(doc.Source);
}
searchResponse = await elastic.ScrollAsync<SupplierPricelistStatistic>("10m", searchResponse.ScrollId);
}

我所有的时间戳都具有以下值:

{01-01-0001 00:00:00}

查看时间戳的映射,如下所示:
 "timestamp": {
"type": "date"
}

我不知道为什么会这样。也许我在某处缺少某些配置?

编辑:

根据要求:

我正在使用NEST版本6.6.0和elasticsearch 6.6.2

收集数据的完整方法:
public async Task <List<SupplierPricelistStatistic>> GetSupplierPricelistStatistic(Guid id, IElasticClient elastic, int year, string month)
{
var searchResponse = await elastic.SearchAsync<SupplierPricelistStatistic>(s => s
.From(0)
.Take(2000)
.Query(q => +q
.Match(m => m
.Field(f => f.SupplierId)
.Query(id.ToString())
)
)
.Scroll("10m")
).ConfigureAwait(false);

var resultList = new List<SupplierPricelistStatistic>();

while (searchResponse.Documents.Any())
{
foreach (var doc in searchResponse.Hits)
{
var tempSupStat = doc.Source;
DateTime dateTime;
if (month != "0")
{
int.TryParse(month, out int intMonth);
dateTime = new DateTime(year, intMonth, DateTime.Now.Day);
if (tempSupStat.Timestamp.Year == dateTime.Year && tempSupStat.Timestamp.Month == dateTime.Month)
{
resultList.Add(tempSupStat);
}
}
else
{
dateTime = new DateTime(year, DateTime.Now.Month, DateTime.Now.Day);
if (tempSupStat.Timestamp.Year == dateTime.Year)
{
resultList.Add(tempSupStat);
}
}
}
searchResponse = await elastic.ScrollAsync<SupplierPricelistStatistic>("10m", searchResponse.ScrollId);
}

return resultList;
}

最佳答案

所以我再次看了看我的模特

public DateTime Timestamp { get; }

它没有二传手。添加一个解决了该问题。

关于c# - Elasticsearch C#datetime获取日期时间默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com