我很难将弹性查询转换为c#Nest等价物。
这是我的弹性查询
"from":0,
"size":15,
"sort":[
{
"tags.date" :{
"order" : "desc",
"nested" : {
"path" : "tags",
"filter" : {
"term" : {"tags.id" : 1}
}
}
}
}
],
当我尝试使用C#Nest 6.2.0时
.Fomm(0)
.Size(15)
.Sort(s => s
.Descending(sdf => sdf.Tags.First().Date)
.Field(ff => ff
.Nested(nstd => nstd
.Path(nsp => nsp.Tags)
.Filter(f2 => f2
.Term(sft => sft
.Field(a1 => a1
.Tags.First().Id)
.Value(1)
)
)
)
)
)
它产生
"from":0,
"size":15,
"sort":[
{
"tags.date":{
"order":"desc"
}
}
],
如何在嵌套文档中应用过滤器?我在这里想念的是什么?
嵌套排序的排序顺序和目标字段需要在嵌套排序调用中。例如,给出以下模型
public class Person
{
public IEnumerable<Tag> Tags {get;set;}
}
public class Tag
{
public int Id {get;set;}
public DateTime Date {get;set;}
}
这看起来像
var client = new ElasticClient(settings);
var searchResponse = client.Search<Person>(s => s
.From(0)
.Size(15)
.Sort(so => so
.Field(f => f
.Field(ff => ff.Tags.First().Date)
.Order(Nest.SortOrder.Descending)
.Nested(n => n
.Path(p => p.Tags)
.Filter(fi => fi
.Term(sft => sft
.Field(ff => ff.Tags.First().Id)
.Value(1)
)
)
)
)
)
);
产量
{
"from": 0,
"size": 15,
"sort": [
{
"tags.date": {
"nested": {
"filter": {
"term": {
"tags.id": {
"value": 1
}
}
},
"path": "tags"
},
"order": "desc"
}
}
]
}