使用 ElasticSearch 7.16.3,我想定義一個過濾器來回傳我所有value優于minimum 30%的產品
我現在有這個查詢:
GET product_price/_search
{
"query": {
"bool": {
"filter": {
"script": {
"script": """
return doc['value'].value >= (doc['minimum'].value (doc['minimum'].value * 30 / 100));
"""
}
}
}
}
}
我得到這個錯誤:
"reason" : "檔案沒有欄位值!使用 doc[].size()==0 檢查檔案是否缺少欄位!"
我的minimum欄位可以為空,所以我當然不想對此應用過濾器。我試圖測驗該欄位,但由于它是 a double,我無法檢查它是否為空。
有什么好的方法嗎?
uj5u.com熱心網友回復:
只有當兩個欄位都存在時,您才需要應用公式,如下所示:
GET product_price/_search
{
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "value"
}
},
{
"exists": {
"field": "minimum"
}
},
{
"script": {
"script": """
return doc['value'].value >= (doc['minimum'].value (doc['minimum'].value * 30 / 100));
"""
}
}
]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/423047.html
標籤:
