问题标签 [elasticsearch-scripting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
137 浏览

elasticsearch - Elasticsearch:随机字段的聚合

在此处输入图像描述

现在我有一个像图片一样的文件。本文档的结构是包含许多随机键字段的“内容”字段(请注意,键没有固定的格式。它们可能就像 UUID 一样)。我想用 ES 查询找到“内容”中所有键的 start_time 的最大值。我能为此做些什么?文件:

我已经尝试过乔的解决方案并且它有效。但是当我像这样修改文档时:

它出错了:

0 投票
1 回答
299 浏览

elasticsearch - 分数结果的更正

我想知道是否可以在弹性中实现这一点。假设我有这种结构的文件。

我会寻找title包含单词的文档text1,我会找到这个文档,而且,由于这个单词在score_adj并且它有-2,我会将最终分数减少这个数字。有可能实现这样的逻辑吗?我知道有可以script_score让你改变分数,但我不明白你怎么能重复这种情况。

0 投票
0 回答
57 浏览

elasticsearch - elasticsearch中的脚本

我有几个关于弹性搜索脚本的问题,希望有人能帮助我。我需要从文档中添加几个参数_score并按总值排序。首先,我将描述我拥有和需要添加的数据:

  • rating- 一个从 1 到 9 的数字,
  • duration_bucket是一个从 0 到 2 的数字,
  • rating_adj[ {
    • text- text,如果传递的参数与这个值匹配,结果将更改为下一个值。

    • adj- 结果将被更改的数字。

}]

  • 好吧,它score本身,通常这个值的范围是 1 到 4。

最初,我只是按以下顺序排序:

  1. score
  2. rating
  3. duration_bucket

但这给出了稍微不同的结果。因此,编写了一个小脚本来添加所有这些值。

还有第一个问题。我尝试了两种选择。

  1. 通过function score并已按此分数排序。
  2. 直接通过script sort 我没有注意到性能上的差异,这些方法有什么显着差异吗?

还有第二个问题。与通常的排序相比,使用此脚本时,处理器已完全加载。有什么方法可以优化脚本吗?还是全都与硬件有关?

0 投票
1 回答
328 浏览

elasticsearch - 具有动态数据/nested_objects 的聚合

我正在尝试聚合 ElasticSearch 中的动态映射字段。

例如:

下面的属性settings是动态的。基本上我需要这样的查询:

由于*在这里不起作用,我想知道是否有办法从无痛脚本中返回字段,然后可能使用管道聚合?Object.keys(settings)我在 JavaScript 中找不到无痛的等价物。

我已经看到了一种使用嵌套对象的方法,但我想避免这种情况,因为可能有很多“设置”属性,并且默认限制是 50,而nested_objects 具有 10000 个属性。

0 投票
1 回答
374 浏览

elasticsearch - 从 ElasticSearch 查询中的日期字段中提取日期 (yyyyMMdd)

我的索引有一个日期字段,格式为2020-01-04T05:00:06.870000Z. 在 ES 查询响应中,我需要表单中的日期yyyyMMdd,所以20200104. 我尝试使用脚本查询并分别提取日、月和年。我怎样才能将它们连接起来_source以获得number表格yyyyMMdd

样本数据 :

询问:

0 投票
1 回答
592 浏览

elasticsearch - 如何在elasticsearch中更新和剥离数组字段的第一个字符

我在弹性搜索的索引中有以下内容,列为 json doc

当前的

} }

需要更新

} }

我将如何更新索引以去除等于 bar 的字符串的第一个字符?

我尝试了以下适用于单个字段的语法,但在数组字段上运行时收到异常

映射

}

0 投票
1 回答
59 浏览

elasticsearch - 如何在写入 ElasticSearch 时使用更新 API(无痛)连接对象而不是整个替换

场景:在 ElasticSearch 上有一个文档 A,我想在这个文档上连接文档 B 上存在的一些字段。

文件 A:

文件 B:

要在此文档上书写,我可以使用 write ES 路径和​​类似的正文:

但是,如果文档 A 存在于 ES 上,例如 check do ( if( ctx._source.containsKey('id') )),则该文档将被完全覆盖。我可以替换属性参数以逐步选择每个元素,例如:

那会解决我的问题,但这给我带来了一个问题,逻辑不能是静态的,因为在现实世界中,文档有很多(非常多)字段,应用程序的支持会很困难。上次更新所需的文档必须类似于:

所以,问题是,我如何更新文档以通过小步骤或仅使用一个运算符来附加新字段?

0 投票
1 回答
65 浏览

elasticsearch - 按字段的未知值过​​滤文档

我正在尝试创建一个查询,以按字段(在我的情况下为“host.name”)中的一个(可以是任何人)值过滤我的文档。关键是我以前不知道该字段的唯一值。我需要找到这些并选择一个用于查询。

我曾使用无痛脚本尝试过以下查询,但未能实现目标。

如果有任何人可以帮助我改进建议我一个新的想法,我将不胜感激。

0 投票
1 回答
62 浏览

elasticsearch - Elasticsearch 脚本数组大小

谁能帮我构建以下查询。运行此查询时出现以下错误。ES版本为7.9.0;在我的模型中有一个字段“repliedBy”,它是一个数组字段。它的值总是用空数组初始化。但在某些实体上,它有一个或几个对象。我需要编写一个查询来获取所有带有空数组的项目。

错误:

0 投票
0 回答
33 浏览

elasticsearch - 根映射定义在运行弹性搜索无痛脚本时具有不受支持的参数(mapper_parsing_exception)

当我尝试运行上述脚本时出现以下错误,谁能告诉我哪里出错了,我的弹性搜索版本是v6.5.2