您好,我想了解您可以使用 Elastic Search 查詢的深度。
我有一個屬性為“價格”的索引,我會提取價格 > AVG(Price) 的任何檔案。
例如,如果我有 6 個具有此價格的檔案:
532,400,299,100,100,33
它應該提取檔案 299、400、532,因為 > 平均價格 (244)。
我可以通過簡單的彈性搜索查詢來達到這個目標,或者我需要使用其他東西,例如腳本(https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html)或自定義使用另一種語言(nodejs、python、.Net 等)撰寫腳本還是使用一些 ETL 工具,例如 Logstash?
我在識別道路時遇到了一些困難。我嘗試使用查詢在 ES 中使用子查詢,但它不受支持。
({ "query" : "select * from myIndex where Price > (select avg('Price') from myIndex) "})
uj5u.com熱心網友回復:
我認為此查詢將以有效的方式解決您的問題:
{
"aggs":{
"price_gte_244":{
"filter":{
"range":{
"price":{
"gte":244
}
}
},
"aggs":{
"avg_price":{
"avg":{
"field":"price"
}
}
}
}
}
}
當244可以是您想要的任何值/變數時
如果您想閱讀有關過濾器聚合的更多資訊:過濾器聚合檔案
uj5u.com熱心網友回復:
根據資料的結構方式,您可以通過AVG 聚合獲得所有檔案的平均值。然后,在Range 查詢中使用該值來查找大于該值的檔案。您還可以查看與 SQL HAVING 子句有很多相似之處的Bucket Selector Aggregation。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/320936.html
上一篇:如何在陣列上創建范圍查詢
