我需要一些关于从ELlasticSearch (1.7.3)查询记录的帮助。我们将获得执行的评估列表,并仅显示最后完成的评估,如下所示:
evaluation: [
{
id: 2,
breaches: null
},
{
id: 6,
breaches: null
},
{
id: 7,
breaches: null
},
{
id: 15,
breaches: null
},
{
id: 18,
breaches: [
"rule_one",
"rule_two",
"rule_three"
]
},
{
id: 19,
breaches: [
"rule_one",
"rule_two",
"rule_three"
]
}
]
现在我们需要根据最近执行的评估来查询记录,即只查询评估数组的最后一个对象。我们发现支持 inner_hits 对嵌套记录进行排序和限制。为此,我们编写了一个查询以 evaluation id
按 desc 顺序排序,并将其大小限制为 1,如下所示:
{
"query": {
"bool": {
"must": {
"nested": {
"path": " evaluation",
"query": {
"bool": {
"must": {
"term": {
" evaluation. breaches": "rule_one"
}
}
}
},
"inner_hits": {
"sort": {
" evaluation.id": {
"order": "desc"
}
},
"size": 1
}
}
}
}
}
}
请在下面找到映射:
evaluation: {
type: "nested",
properties: {
id: {
type: "long"
},
breaches: {
type: "string"
}
}
}
我们尝试对记录进行排序,但没有成功,您能否建议一些其他方法来搜索嵌套记录的最后一个对象。
谢谢。