[英]Nested Date Range Query Filter ElasticSearch NEST C#
我有一个包含许多Departures
的简单Trip
对象,并且我想返回父Trip
,其中包含大于日期的任何出发点。
Trip JSON看起来像
{
"title": "Something",
"code": "something else",
"departures" : [{ "out" : {date}, "in" : {date} }]
}
我可以通过在具有发布数据的类型终结点上调用_search来使其在PostMan中手动工作:
{
"query" : {
"nested" : {
"path" : "departures",
"query" : {
"bool" : {
"filter" : [
{ "range" : { "departures.out" : { "gt" : 1483315200000 } } }
]
}
}
}
}
}
但是我使用的是C#,尤其是NEST,并且这样编写查询:
var searchResponse = client.Search<Trip>(s => s
.Index("indexName")
.From(0)
.Size(10)
.Query(q => q
.Nested(n => n
.Path(t => t.Departures)
.Query(q2 => q2
.Bool(b => b
.Must(f => f
.DateRange(dr => dr
.Field(t2 => t2.Departures.First().Out)
.GreaterThanOrEquals("01/02/2017")
.Format("dd/MM/yyyy")
)
)
)
)
)
)
);
NEST抛出错误Failed to create query
:
query: {
"nested" : {
"query" : {
"bool" : {
"must" : [
{
"match_none" : {
"boost" : 1.0
}
}
],
"disable_coord" : false,
"adjust_pure_negative" : true,
"boost" : 1.0
}
},
"path" : "departures",
"ignore_unmapped" : false,
"score_mode" : "avg",
"boost" : 1.0
}
为什么不能正确创建日期范围查询? 我尝试了各种不同的变体,但似乎没有任何效果!
我必须手动设置索引并将离开定义为嵌套对象。 只是将数据推入索引并使其自动映射属性并没有将其定义为嵌套对象,因此无法正确创建查询。
var index = new CreateIndexDescriptor(INDEX_NAME)
.Mappings(ms => ms
.Map<Trip>(m => m
.AutoMap()
.Properties(p => p
.Nested<Departure>(n => n
.Name(d => d.Departures)
)
)
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.