问题标签 [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.
elasticsearch - Elasticsearch:随机字段的聚合
现在我有一个像图片一样的文件。本文档的结构是包含许多随机键字段的“内容”字段(请注意,键没有固定的格式。它们可能就像 UUID 一样)。我想用 ES 查询找到“内容”中所有键的 start_time 的最大值。我能为此做些什么?文件:
我已经尝试过乔的解决方案并且它有效。但是当我像这样修改文档时:
它出错了:
elasticsearch - 分数结果的更正
我想知道是否可以在弹性中实现这一点。假设我有这种结构的文件。
我会寻找title
包含单词的文档text1
,我会找到这个文档,而且,由于这个单词在score_adj
并且它有-2
,我会将最终分数减少这个数字。有可能实现这样的逻辑吗?我知道有可以script_score
让你改变分数,但我不明白你怎么能重复这种情况。
elasticsearch - elasticsearch中的脚本
我有几个关于弹性搜索脚本的问题,希望有人能帮助我。我需要从文档中添加几个参数_score
并按总值排序。首先,我将描述我拥有和需要添加的数据:
rating
- 一个从 1 到 9 的数字,duration_bucket
是一个从 0 到 2 的数字,rating_adj
[ {text
- text,如果传递的参数与这个值匹配,结果将更改为下一个值。adj
- 结果将被更改的数字。
}]
- 好吧,它
score
本身,通常这个值的范围是 1 到 4。
最初,我只是按以下顺序排序:
score
rating
duration_bucket
但这给出了稍微不同的结果。因此,编写了一个小脚本来添加所有这些值。
还有第一个问题。我尝试了两种选择。
- 通过
function score
并已按此分数排序。 - 直接通过
script sort
我没有注意到性能上的差异,这些方法有什么显着差异吗?
还有第二个问题。与通常的排序相比,使用此脚本时,处理器已完全加载。有什么方法可以优化脚本吗?还是全都与硬件有关?
elasticsearch - 具有动态数据/nested_objects 的聚合
我正在尝试聚合 ElasticSearch 中的动态映射字段。
例如:
下面的属性settings
是动态的。基本上我需要这样的查询:
由于*
在这里不起作用,我想知道是否有办法从无痛脚本中返回字段,然后可能使用管道聚合?Object.keys(settings)
我在 JavaScript 中找不到无痛的等价物。
我已经看到了一种使用嵌套对象的方法,但我想避免这种情况,因为可能有很多“设置”属性,并且默认限制是 50,而nested_objects 具有 10000 个属性。
elasticsearch - 从 ElasticSearch 查询中的日期字段中提取日期 (yyyyMMdd)
我的索引有一个日期字段,格式为2020-01-04T05:00:06.870000Z
. 在 ES 查询响应中,我需要表单中的日期yyyyMMdd
,所以20200104
. 我尝试使用脚本查询并分别提取日、月和年。我怎样才能将它们连接起来_source
以获得number
表格yyyyMMdd
?
样本数据 :
询问:
elasticsearch - 如何在elasticsearch中更新和剥离数组字段的第一个字符
我在弹性搜索的索引中有以下内容,列为 json doc
当前的
} }
需要更新
} }
我将如何更新索引以去除等于 bar 的字符串的第一个字符?
我尝试了以下适用于单个字段的语法,但在数组字段上运行时收到异常
映射
}
elasticsearch - 如何在写入 ElasticSearch 时使用更新 API(无痛)连接对象而不是整个替换
场景:在 ElasticSearch 上有一个文档 A,我想在这个文档上连接文档 B 上存在的一些字段。
文件 A:
文件 B:
要在此文档上书写,我可以使用 write ES 路径和类似的正文:
但是,如果文档 A 存在于 ES 上,例如 check do ( if( ctx._source.containsKey('id') )
),则该文档将被完全覆盖。我可以替换属性参数以逐步选择每个元素,例如:
那会解决我的问题,但这给我带来了一个问题,逻辑不能是静态的,因为在现实世界中,文档有很多(非常多)字段,应用程序的支持会很困难。上次更新所需的文档必须类似于:
所以,问题是,我如何更新文档以通过小步骤或仅使用一个运算符来附加新字段?
elasticsearch - 按字段的未知值过滤文档
我正在尝试创建一个查询,以按字段(在我的情况下为“host.name”)中的一个(可以是任何人)值过滤我的文档。关键是我以前不知道该字段的唯一值。我需要找到这些并选择一个用于查询。
我曾使用无痛脚本尝试过以下查询,但未能实现目标。
如果有任何人可以帮助我改进建议我一个新的想法,我将不胜感激。
elasticsearch - Elasticsearch 脚本数组大小
谁能帮我构建以下查询。运行此查询时出现以下错误。ES版本为7.9.0;在我的模型中有一个字段“repliedBy”,它是一个数组字段。它的值总是用空数组初始化。但在某些实体上,它有一个或几个对象。我需要编写一个查询来获取所有带有空数组的项目。
错误:
elasticsearch - 根映射定义在运行弹性搜索无痛脚本时具有不受支持的参数(mapper_parsing_exception)
当我尝试运行上述脚本时出现以下错误,谁能告诉我哪里出错了,我的弹性搜索版本是v6.5.2