在我的彈性搜索索引中,每個檔案都有兩個日期欄位createdDate和modifiedDate. 我正在嘗試在 kibana 中添加一個過濾器來獲取modifiedDate大于createdDate. 如何在kibana中創建這個過濾器?
嘗試使用下面的查詢而不是大于它被認為是 gte 并獲取所有記錄
GET index/_search
{
"query": {
"bool": {
"filter": {
"script": {
"script" : {
"inline" : "doc['modifiedTime'].value.getMillis() > doc['createdTime'].value.getMillis()",
"lang" : "painless"
}
}
}
}
}
}
uj5u.com熱心網友回復:
有幾個選項。
選項 A:最簡單和最高效的一種是將兩個欄位的差異存盤在檔案的新欄位中,例如
{
"createDate": "2022-01-11T12:34:56Z",
"modifiedDate": "2022-01-11T12:34:56Z",
"diffMillis": 0
}
{
"createDate": "2022-01-11T12:34:56Z",
"modifiedDate": "2022-01-11T12:35:58",
"diffMillis": 62000
}
然后,在 Kibana 中,您可以查詢diffMillis > 0并找出創建后已修改的所有檔案。
選項 B:您可以使用script查詢
GET index/_search
{
"query": {
"bool": {
"filter": {
"script": {
"script": """
return doc['createdDate'].value.millis < doc['modifiedDate'].value.millis;
"""
}
}
}
}
}
注意:根據您擁有的資料量,此選項可能會帶來災難性的性能,因為需要對您的所有檔案進行評估。
選項 C:如果您使用的是 ES 7.11 ,則可以直接從Kibana Discover 視圖中使用運行時欄位。
您可以使用以下腳本diffMillis向您的索引模式添加一個新的運行時欄位(例如命名它):
emit(doc['modifiedDate'].value.millis - doc['createdDate'].value.millis)
然后您可以將以下查詢添加到您的搜索欄中
diffMillis > 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/408445.html
標籤:
