【发布时间】:2019-08-29 12:27:18
【问题描述】:
我正在尝试搜索以返回仅当最新文档与所查询的任何术语匹配时才返回的最新文档。
考虑以下文件:
submitterId:635535 action:CREATE billerId:009207 marketBase:RH submitterDisabled:N versionDate:20190818141059
submitterId:635535 action:UPDATE billerId:009207 marketBase:RH submitterDisabled:N versionDate:20190827170044
submitterId:635535 action:UPDATE billerId:009207 marketBase:RH submitterDisabled:Y versionDate:20190827174522
我想要的是用户搜索任何元素(减去 versionDate)并且只找到组中的最新文档。额外的警告是,如果他们搜索的值与最新文档中的任何内容都不匹配,则不应返回任何内容。
示例: 搜索“submitterDisabled=N”。考虑到上面的示例文档,不应返回任何内容,因为最新记录不包含匹配值。它有“submitterDisabled="Y"。
不幸的是,我们的查询设置方式是在对 versionDate 进行任何类型的聚合之前对术语进行直接匹配。我知道这是问题所在,但不知道如何解决。警告,我对 ES 非常陌生。
有人知道这里可能发生了什么吗?
GET _search
{
"size":0,
"query":{
"bool":{
"must":[
{
"term":{"submitterId.keyword":"635535"}
},
{
"wildcard":{"marketBase.keyword":"*"}
},
{
"term":{"submitterDisabled.keyword":"N"}
}]
}
},
"aggs":{
"group":{
"terms":{
"field":"submitterId.keyword",
"size":10000
},
"aggs":{
"group":{
"terms":{
"field":"marketBase.keyword"
},
"aggs":{
"group_docs":{
"top_hits":{
"size":1,
"sort":{
"versionDate.keyword":{"order":"desc"}
}
}
}
}
}
}
}
}
}
【问题讨论】:
标签: elasticsearch