{
"id": 9,
"resolutions": [
{
"divisionId": 8
}
]
},
{
"id": 123,
"resolutions": [
{
"employeeId": 1,
"divisionId": 5
},
{
"divisionId": 7
}
]
}
索引由document
对象组成,每个document
都有一个包含对象的数组resolutions
。resolution
既可以给雇员,也可以给部门。雇员将同时有divisionId
和employeeId
,但部门将只有divisionId
。我只需要筛选部门。
{
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"nested": {
"path": "resolutions",
"query": {
"terms": {
"resolutions.divisionId": [
660
]
}
}
}
}
],
"boost": 1
}
},
{
"bool": {
"must_not": [
{
"nested": {
"path": "resolutions",
"query": {
"exists": {
"field": "resolutions.employeeId"
}
}
}
}
],
"boost": 1
}
}
],
"minimum_should_match": 2,
"boost": 1
}
}
],
"boost": 1
}
}
],
"boost": 1
}
}
}
问题是这个查询检查解析数组中的所有对象,所以如果只向数组中添加一个部门,我会得到结果,但是如果我还添加了一个雇员,我就不会得到结果。
如果数组中至少存在一个除法,而不管其他对象是什么,如何修复此问题以返回结果?
1条答案
按热度按时间smtd7mpg1#
您的查询相当复杂。
下面将回答our查询
如果数组中至少存在一个分区,而不管其他对象是什么?
查询
如果要筛选某些值,可以用查询条件替换筛选器中现有条件
如果要查找匹配的嵌套文档,请使用inner_hits。