Mic*_*ker 5 elasticsearch elasticsearch-query
我有以下查询,目前使用动态脚本.我发现我的主机不支持这一点,因为它具有更广泛的安全隐患.我将如何重写此脚本以使其不使用动态脚本?
{
"size": 0,
"aggs": {
"filtered_cells": {
"filter": {
"geo_bounding_box": {
"loc": {
"top_left": "58.645976, -13.515625",
"bottom_right": "50.524473, 2.436523"
}
}
},
"aggs": {
"cells": {
"geohash_grid": {
"field": "loc",
"precision": 2
},
"aggs": {
"center_lat": {
"avg": {
"script": "doc['loc'].lat"
}
},
"center_lon": {
"avg": {
"script": "doc['loc'].lon"
}
}
}
}
}
}
},
"query": {
"match_all": {}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以将脚本存储在文件系统上并从查询/聚合中引用它们。
创建一个文件,命名config/scripts/lat.groovy为以下内容
doc['loc'].lat
Run Code Online (Sandbox Code Playgroud)
创建另一个文件,命名config/scripts/lon.groovy为以下内容
doc['loc'].lon
Run Code Online (Sandbox Code Playgroud)
然后将您的查询更改为:
{
"size": 0,
"aggs": {
"filtered_cells": {
"filter": {
"geo_bounding_box": {
"loc": {
"top_left": "58.645976, -13.515625",
"bottom_right": "50.524473, 2.436523"
}
}
},
"aggs": {
"cells": {
"geohash_grid": {
"field": "loc",
"precision": 2
},
"aggs": {
"center_lat": {
"avg": {
"script_file": "lat"
}
},
"center_lon": {
"avg": {
"script_file": "lon"
}
}
}
}
}
}
},
"query": {
"match_all": {}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |