elasticsearch - 不使用动态脚本查询

标签 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": {}
  }
}

最佳答案

您可以 store your scripts on the file system并从您的查询/聚合中引用它们。

使用以下内容创建名为 config/scripts/lat.groovy 的文件

 doc['loc'].lat

使用以下内容创建另一个名为 config/scripts/lon.groovy 的文件

 doc['loc'].lon

然后将您的查询更改为:

{
  "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": {}
  }
}

关于elasticsearch - 不使用动态脚本查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143408/

相关文章:

elasticsearch - 如何在同一个字段上聚合 :value which are specified in query in elasticsearch

elasticsearch - 如何用 Go 构造 Elasticsearch 查询?

elasticsearch - 如何让Elasticsearch坐标节点不合并和求助

java - 以嵌入式模式运行 Elasticsearch 生产集群

elasticsearch - Geoip Logstash过滤器

elasticsearch - 术语与术语查询的评分不同

elasticsearch - Elasticsearch 全字符串匹配不起作用

elasticsearch - ElasticSearch:在聚合期间按不重复计数过滤

elasticsearch - 需要帮助来编写Elasticsearch查询,该查询应基于具有(传递的值或null)的一个字段和另一个数组字段的文本进行搜索

elasticsearch - 为什么包含所有搜索词的文档得分较低?