elasticsearch 使用嵌套日期范围
通过示例,我提出了以下查询。我没有从中得到任何结果,但如果我将“01/01/2017”替换为“null”,那么我会得到记录(所有记录都是从2014年开始的,所以我知道它应该返回数据)。有人能帮我吗elasticsearch 使用嵌套日期范围,elasticsearch,nest,elasticsearch,Nest,通过示例,我提出了以下查询。我没有从中得到任何结果,但如果我将“01/01/2017”替换为“null”,那么我会得到记录(所有记录都是从2014年开始的,所以我知道它应该返回数据)。有人能帮我吗 var response = elasticClient.Search<AnalyticsFormData>(x => x .Type("formdata") .Size(500) .Query(q => q.Bool(b =>
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)));
var-response=elasticClient.Search(x=>x
.类型(“formdata”)
.尺寸(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(“2017年1月1日”)()()))
.Sort(s=>s.升序(f=>f.LastUpdated));
要么是字段映射不正确,要么是日期格式不正确。请尝试以下操作:
elasticClient.CreateIndex(indexName,
create => create.Mappings(
mappings => mappings.Map<AnalyticsFormData>(map => map.AutoMap())
)
);
elasticClient.CreateIndex(indexName,
create=>create.Mappings(
mappings=>mappings.Map(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)));
var response=client.Search(x=>x
.尺寸(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(新日期时间(2017年1月1日()()())))
.Sort(s=>s.升序(f=>f.LastUpdated));
日期值是以何种格式存储的?谢谢,我原以为DateMath.Anchored参数需要一个字符串,但事实证明它需要一个datetime对象。
DateMath.Anchored()
可以采用string
或datetime
:好吧,出于某种原因,它不能使用“dd/mm/yyyy”格式的字符串那么字符串应该采用什么格式才能工作呢?因为我尝试了所有不同的格式,但都没有成功。@Jynn默认情况下,所使用的字符串
格式必须是所针对的日期
字段上使用的格式
的有效格式。如果要在查询中传递不同的日期格式,则还需要在查询中指定格式
:本质上,Elasticsearch需要知道如何解析传递到服务器端日期对象中的字符串。