我有以下結構(簡化):elasticsearch只顯示其中嵌套的對象沒有價值
{
"id": 100,
"vendorStatuses": [
{
"id": 200,
"status": "Open"
}
]
}
我想找到什麼是那裏有沒有供應商的狀態記錄。我們最近從elasticseach 1.x升級到5.x,並且無法轉換爲獲取此功能。
我的舊巢查詢是這樣的:
!Filter<PurchaseOrder>.Nested(nfd => nfd.Path(x => x.VendorStatuses.First())
.Filter(f2 => f2.Missing(y => y.Id)));
新的查詢(現在Missing
不可用)看起來像這樣至今:
Query<PurchaseOrder>
.Bool(z => z
.MustNot(a => a
.Exists(t => t
.Field(f => f.VendorStatuses)
)
)
);
產生這樣的:
GET purchaseorder/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "vendorStatuses",
}
}
]
}
}
}
但我仍然看到有vendorStatuses
記錄的結果。
我在做什麼錯?我嘗試過搜索vendorStatuses.id
或其他字段,但它不起作用。當我嘗試反轉邏輯並執行must
時,我看不到任何結果。我也試過把它作爲nested
來做,但是不能接近。
,似乎工作,非常感謝你許多!我試圖做'嵌套',然後'布爾',我沒有意識到可以做'布爾'然後'嵌套',謝謝! – DLeh
不用擔心:)如果您有多個'嵌套'查詢,您可以使用內部'bool'查詢來執行'nested' –