使用嵌套日期范围
using Nest DateRange
使用 this 示例,我提出了以下查询。我没有从中得到任何结果,但如果我用 'null' 替换“01/01/2017”,那么我会得到记录(全部来自 2014 年,所以我知道它应该返回数据)。谁能帮帮我?
var response = elasticClient.Search<AnalyticsFormData>(x => x
.Type("formdata")
.Size(500)
.Query(q => q.Bool(b => b.Must
(mu => mu.MatchPhrase(m => m
.Field(f => f.AppId)
.Query(input.FormAppId)))
.Filter(fi => fi
.DateRange(r => r
.Field(f => f.LastUpdated)
.LessThanOrEquals(DateMath.Anchored("01/01/2017"))))))
.Sort(s => s.Ascending(f => f.LastUpdated)));
您的字段映射不正确,或者日期格式不正确。尝试以下操作:
使用自动映射创建新索引
elasticClient.CreateIndex(indexName,
create => create.Mappings(
mappings => mappings.Map<AnalyticsFormData>(map => map.AutoMap())
)
);
使用以下方法设置日期
var response = client.Search<AnalyticsFormData>(x => x
.Size(500)
.Query(q => q.Bool(b => b.Must
(mu => mu.MatchPhrase(m => m
.Field(f => f.AppId).Query("FormAppId")))
.Filter(fi => fi
.DateRange(r => r
.Field(f => f.LastUpdated)
.LessThanOrEquals(new DateTime(2017, 1, 1))))))
.Sort(s => s.Ascending(f => f.LastUpdated)));
使用 this 示例,我提出了以下查询。我没有从中得到任何结果,但如果我用 'null' 替换“01/01/2017”,那么我会得到记录(全部来自 2014 年,所以我知道它应该返回数据)。谁能帮帮我?
var response = elasticClient.Search<AnalyticsFormData>(x => x
.Type("formdata")
.Size(500)
.Query(q => q.Bool(b => b.Must
(mu => mu.MatchPhrase(m => m
.Field(f => f.AppId)
.Query(input.FormAppId)))
.Filter(fi => fi
.DateRange(r => r
.Field(f => f.LastUpdated)
.LessThanOrEquals(DateMath.Anchored("01/01/2017"))))))
.Sort(s => s.Ascending(f => f.LastUpdated)));
您的字段映射不正确,或者日期格式不正确。尝试以下操作:
使用自动映射创建新索引
elasticClient.CreateIndex(indexName, create => create.Mappings( mappings => mappings.Map<AnalyticsFormData>(map => map.AutoMap()) ) );
使用以下方法设置日期
var response = client.Search<AnalyticsFormData>(x => x .Size(500) .Query(q => q.Bool(b => b.Must (mu => mu.MatchPhrase(m => m .Field(f => f.AppId).Query("FormAppId"))) .Filter(fi => fi .DateRange(r => r .Field(f => f.LastUpdated) .LessThanOrEquals(new DateTime(2017, 1, 1)))))) .Sort(s => s.Ascending(f => f.LastUpdated)));