我有一个具有嵌套结构的文档,该嵌套对象有一个assignment_name
和一个due_date
:
映射
{
"goal": {
"mappings": {
"doc": {
"properties": {
"title": {
"type": "keyword"
},
// lot's of other fields here ...
"steps": {
"type": "nested",
"properties": {
"assignment_name": {
"type": "keyword"
},
"due_date": {
"type": "date"
}
// lots of other fields here
}
}
}
}
}
}
}
我要:
user_a
)此查询为我提供了随机结果(无排序):
{
"query":{
"bool":{
"filter":[
{
"nested":{
"path":"steps",
"query":{
"term":{
"steps.assignment_name":"user_a"
}
}
}
}
]
}
},
"sort":[
{
"steps.due_date":{
"order":"asc",
"nested":{
"path":"steps",
"filter":{
"term":{
"steps.assignment_name":"user_a"
}
}
}
}
}
],
"from":0,
"size":25
}
答案 0 :(得分:1)
首先,您需要确保@Advice.OnMethodEnter
public static void before(@Advice.This Object obj){
System.out.println(obj);
System.out.println("===========ENTERED INFO==========");
}
字段的数据类型为steps
。然后,您必须使用nested sorting根据嵌套文档字段对文档进行排序。
查询为:
nested
上面的要点是使用与主查询中相同的过滤器来排序文档。这样可以确保使用正确的嵌套文档的字段值对文档进行排序。