{
"id": 9,
"resolutions": [
{
"divisionId": 8
}
]
},
{
"id": 123,
"resolutions": [
{
"employeeId": 1,
"divisionId": 5
},
{
"divisionId": 7
}
]
}
索引由document物件組成,每個物件document都有一個包含物件的陣列resolutions。Aresolution可以分配給員工或部門。員工將擁有兩者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
}
}
}
問題是這個查詢檢查了解析度陣列的所有物件。因此,如果只將一個部門添加到陣列中,我會回傳結果,但如果我還添加了一名員工,則不會回傳結果。
如果陣列中至少存在一個除法,無論其他物件是什么,如何解決此問題以回傳結果?
uj5u.com熱心網友回復:
你的查詢很復雜。
下面將回答我們的查詢
如果陣列中至少存在一個磁區,而不管其他物件是什么?
詢問
{
"query": {
"nested": {
"path": "resolutions",
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "resolutions.employeeId"
}
}
],
"filter": [
{
"exists": {
"field": "resolutions.divisionId"
}
}
]
}
}
}
}
}
如果要過濾某些值,可以將過濾器中的存在條件替換為術語查詢。
如果要查找匹配的嵌套檔案,請使用inner_hits 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516198.html
標籤:弹性搜索
