问题标签 [elasticsearch-painless]

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 回答
1280 浏览

elasticsearch - 使用 ElasticSearch 无痛脚本计算 dayOfWeek 或 timeOfDay

我使用 ES 5.1.2,我试图从一个date字段计算星期几和一天中的时间,并同时考虑时区。

我的第一个脚本是def d = doc['my_field'].date; d.addHours(10); d.getDayOfWeek();

错误消息是找不到 addHours() 方法

如果我将脚本更改为MutableDateTime d = doc['my_field'].date; d.addHours(10); d.getDayOfWeek();错误消息变为

addHours调整时区,一切都很好。但是如果我尝试动态调整时区,一切都会失败。有什么帮助吗?

0 投票
2 回答
1691 浏览

elasticsearch - elasticsearch script_score 自定义评分功能:如何替换缺失值?

我正在查看 elasticsearch 的文档,了解如何为自定义评分函数创建脚本,该函数使用未在链接上查询评分的字段。

从我所见,您可以像这样构建一个脚本函数:

但我想知道doc['my_numeric_field'].value如果缺少替换的语法是什么?

0 投票
2 回答
2641 浏览

elasticsearch - ElasticSearch:从无痛脚本中的嵌套字段计算 arcDistance

我需要在 Painless 脚本中计算弧距,但在这种情况下还没有找到访问地理 API 的方法,即:

  • 第一点作为参数传递给脚本 - 这意味着我只得到原始值
  • 第二点是从嵌套文档中读取的——这意味着我无法使用doc[myGeoField].valueAPI读取该字段

在这两种情况下,我都无法实例化一个org.elasticsearch.index.fielddata.ScriptDocValues.GeoPoints可以让我访问该方法的.arcDistance()方法。

我也无法使用Painlessorg.elasticsearch.common.geo.GeoUtils中未列入白名单的课程。

在脚本中计算弧距还有其他选择吗?

注意:由于此处无法解释的原因,我必须为此用例使用脚本 - 在查询/过滤器中执行此操作不是一种选择。

0 投票
1 回答
1727 浏览

elasticsearch - 如何使用 ElasticSearch 中的脚本将对象添加到数组中?

我正在尝试将一个项目添加到我的一个 Elastic Search 文档中的数组中。我可以为简单的项目(例如字符串)执行此操作,但现在无法添加对象。这是我当前的代码:

我收到以下错误:

0 投票
1 回答
589 浏览

elasticsearch - 长类型的弹性搜索无痛脚本问题

我目前正在使用 Elastic search 5.2 并尝试 使用以下 rest api执行upsert操作:

这个 api 做了以下事情:

1.) 如果在弹性搜索中找不到索引,则使用 upsert 字段内提供的 json 创建索引。
2.) 如果索引存在,那么它通过运行文档中提供的无痛脚本来执行部分更新。

问题:
我已经为计数器创建了弹性搜索索引映射。

此更新工作正常,直到计数器值在整数范围内。(即)2,147,483,647
超出此值,它会溢出并变为负值,以防预期值为正长值(因为相应的索引映射很长)。有没有办法在使用无痛脚本时解决这个 int 溢出问题?

0 投票
1 回答
3653 浏览

elasticsearch - 如何在无痛脚本 Elasticsearch 5.3 中执行此操作

我们正在尝试复制这个 ES 插件https://github.com/MLnick/elasticsearch-vector-scoring。原因是 AWS ES 不允许安装任何自定义插件。该插件只是在做点积和余弦相似度,所以我猜想在painless脚本中复制它应该很简单。看起来groovy脚本在 5.0 中已弃用。

这是插件的源代码。

我试图从从索引中获取一个字段开始。但我遇到了错误。

这是我的索引的形状。

我已启用delimited_payload_filter

我有一个称为@model_factor存储向量的字段。

这是文件的形状

这是我使用脚本的方式

这是我得到的错误。

问题是如何访问索引字段以@model_factor进行无痛脚本?

0 投票
1 回答
4720 浏览

java - ElasticSearch/Painless:如何访问/汇总对象中的所有值

我一直在研究聚合和使用脚本编写脚本painless,但我无法弄清楚如何对对象中的所有值进行迭代/求和。

例子:

我的映射看起来像

假设我的数据如下所示:

我想对 执行范围查询50.0 + 20.5 + 30.5,或者基本上field1以某种方式访问​​对象中的所有值。

聚合不允许我在字段中使用通配符。我正在查看LeafDocLookup(内部用于无痛)的代码,我看到相关方法被禁用。

我设法编写了这样的脚本:

但这显然是次优的,并不能解决动态键的主要问题。

0 投票
1 回答
2216 浏览

elasticsearch - Elasticsearch Painless 脚本按值获取嵌套字段?

我想根据嵌套字段值计算我在 elasticsearch 上的查询得分。这是我的文档的示例:

我想要的是根据经验数量和范围(去年的值更重要)过滤和排名查询。问题是:我如何才能获得过滤经验的价值?

这是我的查询的简化版本:

希望有办法解决这个问题...

在此先感谢您的帮助

0 投票
1 回答
123 浏览

elasticsearch - Elasticsearch 管道将对象的字段提取到文档的根目录

我正在寻找一种方法来提取对象的内容,例如

并将其转换为

我正在查看提供的处理器,但找不到任何有用的东西。

我最初的想法是:

  • 指定一个字段,其内容我可以正则表达式匹配或以另一种方式选择
  • 遍历它们
  • 将它们的内容内联到新字段。

任何建议将不胜感激!

0 投票
0 回答
2729 浏览

elasticsearch - ElasticSearch - 脚本 - 循环 - 无痛

\我无法在 Painless 中对子文档执行 LOOP。这只是为运行 LOOP 而创建的一个示例场景,场景是另一种场景(这种情况可能是运行过滤器,但问题是子文档中的循环)。

创建

数据

查询