Sorting ElasticSearch:对复杂查询进行排序
我在Elasticsearch(如下)中有一个复杂的查询,我需要在“Activité”(活动)bucket中按日期升序排序。查询可以工作,但我创建日期的基本排序不能工作。我正在寻找如何按创建日期按升序对活动进行排序。例如,我看过一些关于嵌套查询的帖子,但它们似乎没有回答如何解决我查询的复杂性 我正在使用ElasticSearch 2.3.5和Lucene 5.5.0Sorting ElasticSearch:对复杂查询进行排序,sorting,
elasticsearch,nested,Sorting,
elasticsearch,Nested,我在Elasticsearch(如下)中有一个复杂的查询,我需要在“Activité”(活动)bucket中按日期升序排序。查询可以工作,但我创建日期的基本排序不能工作。我正在寻找如何按创建日期按升序对活动进行排序。例如,我看过一些关于嵌套查询的帖子,但它们似乎没有回答如何解决我查询的复杂性 我正在使用ElasticSearch 2.3.5和Lucene 5.5.0 var searchQuery = { index: "resultats_" + env, body: { si
var searchQuery = {
index: "resultats_" + env,
body: {
size: 0,
sort: [{ date_creation: { order: "asc", mode: "min" } }],
query: {
filtered: {
query: {
match_all: {}
},
filter: {
query: {
bool: {
should: [{}],
must: [
{
term: {
player_id: {
value: params.player_id
}
}
},
{
term: {
classes: {
value: params.grade
}
}
}
],
must_not: [{}]
}
}
}
}
},
aggs: {
Matière: {
terms: {
field: "id_matiere",
size: 10
},
aggs: {
"Titre matière": {
top_hits: {
_source: {
include: ["titre_matiere"]
},
size: 1
}
},
PP: {
terms: {
field: "id_point_pedago",
size: 10
},
aggs: {
"Titre PP": {
top_hits: {
_source: {
include: ["titre_point_pedago"]
},
size: 1
}
},
Compétence: {
terms: {
field: "id_competence",
size: 10
},
aggs: {
"Titre compétence": {
top_hits: {
_source: {
include: ["titre_competence"]
},
size: 1
}
},
Activité: {
terms: {
field: "id_activite",
size: 10
},
aggs: {
"Titre activité": {
top_hits: {
_source: {
include: [
"titre_activite",
"nombre_perimetre_occurrence"
]
},
size: 1
}
},
Trimestres: {
filters: {
filters: {
T1: {
range: {
date_creation: {
gte: params.t1_start,
lte: params.t1_end
}
}
},
T2: {
range: {
date_creation: {
gte: params.t2_start,
lte: params.t2_end
}
}
},
T3: {
range: {
date_creation: {
gte: params.t3_start,
lte: params.t3_end
}
}
}
}
},
aggs: {
Moyenne: {
avg: {
field: "resultat"
}
},
Occurrences: {
cardinality: {
field: "id_occurrence",
precision_threshold: 1000
}
},
Résultat: {
terms: {
field: "resultat",
size: 10,
min_doc_count: 0
}
}
}
}
}
}
}
}
}
}
}
}
}
}
};
您可以这样做:
Activité: {
terms: {
field: "id_activite",
size: 10
},
aggs: {
"Titre activité": {
top_hits: {
_source: {
include: [
"titre_activite",
"nombre_perimetre_occurrence"
]
},
size: 1,
add this line -> sort: [{ date_creation: { order: "asc", mode: "min" } }],
}
},
那么你想在
Activité
聚合下对热门歌曲进行排序吗?是的,@Val听起来不错。我还不能确认它是否有效,但我可以确认它没有破坏我的查询-你的回答帮助我了解大致情况。很酷,很高兴它有帮助,如果你有更多问题,请随时回来。