当前位置: 首页 > 面试题库 >

ElasticSearch:在groovy脚本中访问文档嵌套值

司徒修能
2023-03-14
问题内容

我有一个存储在ElasticSearch中的文档,如下所示。_资源:

 {
 "firstname": "John",
 "lastname": "Smith",
 "medals":[
           {
             "bucket": 100, 
             "count": 1
           },
           {
             "bucket": 150,
             "count": 2
           }
         ]
  }

我可以使用doc.firstname脚本化的指标汇总 http://www.elasticsearch.org/guide/zh-
CN/elasticsearch/reference/current/search-aggregations-metrics-scripted-
metric-
aggregation.html访问

文档中的字符串类型值。

但是我无法使用获取字段值 doc.medals[0].bucket.

您能帮我一下,让我知道如何访问嵌套字段中的值吗?


问题答案:

将_source用于嵌套属性。Doc保留已加载到内存中的字段。嵌套文档可能无法加载,应使用_source访问。

例如:

GET index/type
    {
     "aggs": {
      "NAME": {
      "scripted_metric": {
        "init_script": "_agg['collection']=[]",
        "map_script": "_agg['tr'].add(_source.propertry1.prop);",
        "combine_script": "return _agg",
        "reduce_script": "return _aggs"
      }
    }
  },
  "size": 0
}


 类似资料:
  • 问题内容: 我在elasticsearch中的索引具有以下映射: 源文档如下: 我正在尝试使用距离脚本来基于地理点计算距离。我在elasticsearch结果中发现了该帖子的Return distance吗?帮我 我正在尝试获取所有结果,按半径1km进行过滤,获取距离,然后对geo_point进行排序。查询的结构如下: 我收到状态为500的以下错误: 我尝试以这种方式重写查询: 然后我得到这个错误

  • 问题内容: 给定以下索引,我如何在嵌套数组中选择适当的项目并访问其中的一个值?目的是在内的值中使用它。 我的查询按skill_id过滤,效果很好。然后,我希望能够 针对给定的skill_id 使用更高的分数来提高文档的分数 。 (<-这是关键)。 如何从中访问数组,在数组中找到’skill_id:100’项目,然后使用其值?在上述目前不工作(比分始终是0,而不管数据的,所以我想在正确的地方是不看。

  • 我用ES 5.5的时候更新到6.7。无痛脚本不起作用 这是5.5如果我想获取嵌套文档[transFilter]我这样做 效果很好。 但是 当我使用6.7版本时 params['_source']['carFilter'] 我发现它不起作用 所有参数['_source']为空 我的映射 我的数据示例 和我的查询脚本示例 甚至没有错误只有事实 这一行已经返回 上面的简单无痛只是为了说明问题,下面附上了

  • 问题内容: 我正在编写资产管理应用程序。它允许用户通过向资产添加html控件(例如文本字段,选择菜单等)来存储任意资产属性。然后,该属性的JSON表示成为存储在beddb中的资产JSON文档的一部分。资产在ouchdb中具有以下结构: 我不确定将属性放入数组是否是允许基于属性值搜索资产的最佳方法。将属性直接附加到资产作为属性会更好吗?我正在用Elasticsearch做实验。如果我尝试按原样存储文

  • 我需要一个groovy脚本的代码示例,它可以访问存储在我的文件系统中任何地方的xml文件。在这个xml文件中,我有数据库凭据,我的脚本需要访问数据库。下面是xml 提前致谢:)

  • 我是elasticsearch的新手,对如何进行过滤器、查询和聚合有一些想法,但不确定如何解决下面的问题。我希望能够从下面显示的文档中只查询公司的最新交付(日期和crate_quantity)。我不确定如何去做。有没有办法使用最大聚合从每个文档中只提取最近的交付?