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

使用脚本转换Elasticsearch聚合以转换要聚合的字段值

唐照
2023-03-14
问题内容

我目前有类似的东西:

"aggs": {
        "group_by_myfield": {
            "terms": {
                "field": "myfield"
            }
        }
    }

但是,myfield的值为“ alpha 1.0”,“ alpha 2.0”,“ beta 1.0”。现在,我只想聚合值“ alpha”,“
beta”。我怎么做?我试过了:

"aggs": {
        "group_by_myfield": {
            "terms": {
                "field": "myfield"
                "script": "_value.split()[0]"
            }
        }
    }

但我想这里没有拆分功能。欢迎任何建议!


问题答案:

我设法通过粘贴在问题中的链接来完成此任务:

GET _search
{
    "size": 0, 
    "aggs": {
        "group_by_myfield": {
            "terms": {
                "field": "myfield",
                "script": "_value.replaceAll('\\\\s+.*','')"
            }
        }
    }
}


 类似资料:
  • 问题内容: 我正在尝试创建一个脚本字段,该脚本字段将计算两个时间戳之间的时间差,然后在该脚本字段上聚合一个。 我首先尝试: 在合计平均值下产生价值。 然后我尝试了: 生成了一条错误消息,内容为:“在映射中找不到[timedifference]的字段” 问题答案: 简单地将脚本移到聚合上怎么样?

  • 在我的用例中,最简单的集成组件安排是什么: 接收来自多个来源和多种格式的消息(所有消息都是JSON序列化对象)。 将消息存储在缓冲区中最多10秒(聚合) 通过不同的类属性getter(例如class1.someId(),class2.otherId(),...) 释放所有分组的消息并转换为新的聚合消息。 到目前为止(第1点和第2点),我正在使用聚合器,但不知道3)处的问题是否有现成的解决方案或者我

  • Spring数据ElasticSearch 3.2 现在,由于NativeSearchQueryBuilder的addAggregation方法接受AbstractAggregationBuilder,并且sumBucket的类型为PipelineAggregationBuilder,因此无法将此值传递给addAggregation(sumBucket(“sum\u bucket”,“sequen

  • 问题内容: 我想在字段上使用stats或extended_stats聚合,但是找不到完成此操作的任何示例(即,似乎只能将聚合与实际文档字段一起使用)。 是否有可能计算出“元数据”在ElasticSearch查询响应每个命中字段请求集合(例如,,,,等等)? 我假设答案是“否”,因为未对类似字段进行索引… 问题答案: 注意:就最新版本的Elasticsearch而言,原始答案现在已过时。使用Groo

  • 我在elasticsearch中有一个文档索引,每个文档有480个字段。我试图做的是搜索一个词(例如“Apple”),并获得所有其值与搜索词匹配的唯一字段名。所以如果我的文档是: 作为查询的结果,我希望得到如下所示的聚合: 由于每个文档都有480个字段,所以我更喜欢执行multi_match查询,而不是使用包含所有字段的筛选器: 这个查询在ElasticSearch中可能吗?

  • 我想执行一个术语聚合,并在执行脚本操作后的每个结果桶中获取命中字段。 例如,如果这些是文档: 聚合按“年龄”字段进行,脚本为:“return‘doc['firstName']”doc['lastName']” 结果应该是: 铲斗1(年龄:15岁): null 玛丽·史密斯 安娜·泰勒 这在elasticsearch中可能吗? 编辑: 此外,我正在寻找一种在一个bucket中多次命中的情况下运行脚本