问题标签 [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 投票
0 回答
2340 浏览

elasticsearch - 如何比较弹性搜索无痛脚本中的日期?

老实说,我不知道是谁给它命名painless的,因为它确实不是,而且文档肯定不准确。

首先,我试图与日期进行比较的字段映射为date.

脚本本身看起来像这样:

我得到的错误是:"caused_by":{"type":"illegal_argument_exception","reason":"Unable to find dynamic method [after] with [1] arguments for class [java.lang.String]."

现在我的问题是:为什么地球上的一个场会被映射成date原来的样子string

阅读 API(https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-api-reference.html)清楚地表明有Date一种after方法。

所以......我在这里做错了什么,或者是怎么回事?另外,如果是这样的话……我真的必须每次都将字符串解析回日期吗?如果是这样怎么办?

0 投票
1 回答
1056 浏览

elasticsearch - 过滤掉空字段

我正在使用带有无痛语言的 map/reduce 功能来进行一些聚合。

map_script部分中,我试图过滤掉所有将某个字段设置为null的文档,但我无法这样做。

我已经尝试过containsKey(),但是即使我查看了基础数据并且绝大多数文档都将此字段设置为null!= null ,但对于每个文档,表达式的计算结果都为true

我无法解释这一点,但是当我汇总它时,几乎每个文档的该字段的值都被视为 0,而不是 null。但事实并非如此,因为当我查询这个字段时,我看到一堆空值。

有谁知道发生了什么?如何使用无痛过滤掉 map/reduce 聚合中的空值?

0 投票
1 回答
3049 浏览

elasticsearch - “版本冲突,当前版本与提供的版本不同”在 php 脚本中运行 update_by_query curl 时

我必须更新我的 ES 文档中的一些字段。

我有一个整数“objectID”字段,它是文档所涉及的对象的唯一 ID。

我有一个 String 'objectType' 字段,它是文档所关注的对象类型。

所有文档都描述了对对象的操作,并且 objectType 和 objecID 始终存在于所有文档中。

不幸的是,一些objectType为“post_image”的文档已被索引为“post”。objectID 仍然是唯一且有效的,并且只有一种类型的文档具有错误的 objectType。因此,所有对象至少有另一个具有正确 objectType 和相同唯一 objectID 的文档。

我想使用 update_by_query 在 objectType 为“post”且 objectID 位于 objectType 为“post_image”的任何其他文档中的所有文档上将 objectType 的值更新为“post_image”。

这是我的伪代码脚本:

我是无痛脚本的新手,我不知道如何在我的脚本中放置另一个查询以获取所有“post_image”ID 的列表。我知道我可以将参数传递给脚本,但我也不知道是否或如何使用查询结果。

谢谢!

编辑:

我已经通过使用 Kibana 原始导出提取相关 objectID 的 csv 列表解决了我的部分问题,并且我制作了一个 PHP 脚本来解析每个 objectID 并将其放入我的查询字符串中以用于我的 update_by_query,它只是找到具有匹配 objectID 的所有文档并将 objectType 字段值替换为“post_image”。

我正在使用 php curl 进行这些调用,尽管在我的请求中使用了“冲突”:“继续”,但我遇到了版本冲突问题。我已经在 kibana 的开发控制台中测试了相同的查询,它运行良好,我找不到任何解释为什么它在从 php 运行时不更新我的文档。

这是脚本:

示例响应:

这很奇怪,因为我没有在我的请求中提供任何文档版本。或许它与 upbade_by_query API 的一些自动内部行为有关。

0 投票
1 回答
2781 浏览

elasticsearch - ElasticSearch 在无痛脚本中舍入浮点值

使用 ElasticSearch 的脚本功能时,我注意到舍入问题。我有以下映射:

和一堆被索引的文件。一个文档的值为159944154.8644forfoo字段。当我发送以下查询时:

我得到以下四舍五入的值作为响应:

知道如何解决这个问题吗?提前致谢。

ES 版本:5.3.0

0 投票
1 回答
1083 浏览

elasticsearch - 使用无痛脚本循环点击

有没有办法在 Elasticsearch 5.3 中使用无痛脚本循环查询结果以计算查询返回的命中之间的差异。

我试图在脚本中的 for 循环中循环结果,但无法在哪个实体上循环,我希望脚本有类似更新 api 的 ctx.payload.hits.hits 可以在 for 循环中使用。

0 投票
0 回答
3172 浏览

elasticsearch - Painless,Elasticsearch中如何判断一个变量是否为数组

我想删除数组中的一个元素,如果该字段不是数组,什么也不做。

为此,它必须确定该字段是否为数组,或者是否预期异常。如何?

另外,有Painless的详细说明吗?elasticsearch网站上只有入门。

0 投票
1 回答
533 浏览

elasticsearch - 是否可以在 logstash scripted_upsert 期间访问事件字段?

是否可以使用 scripted_upsert 访问 elasticsearch logstash 输出脚本中的事件字段?

如果我使用这样的脚本,它不会更新文档。但是,如果我设置ctx._source.name为静态的。例如。

script => 'ctx._source.name = "something"'

它按预期工作。和 upserts 文件。

0 投票
0 回答
295 浏览

regex - 如何在 Elasticsearch 5x 的 Painless 语法中编译正则表达式

我需要编译由 Painless 中的参数定义的正则表达式。

我最初的假设是我可以做类似于以下的事情:

但是,我收到以下错误:

也许还有另一种方法可以在 Painless 中将字符串转换为 Pattern 对象?

0 投票
2 回答
5183 浏览

elasticsearch - Elasticsearch无痛,如何判断一个字段的数据类型

在es5.5中,如何判断一个字段是否为数字?

0 投票
1 回答
514 浏览

elasticsearch - elasticsearch 无痛访问动态命名字段

我正在尝试在弹性搜索中平均一个字段,

这有效,

映射在哪里,

我想要做的是访问这里临时命名为 bing..bong 和 bong ..bing 的字段。该字段是动态映射的,有什么方法可以访问相同的吗?