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

elasticsearch - 在 Elasticsearch 中,如何将时区应用于脚本日期操作?

通过下面的聚合并使用 ES5,我想根据给定的时区(作为 TZ 数据库的标识符提供)获取 dayOfWeek 和 hourOfDay。

如何编辑"doc['created'].date.dayOfWeek'以调整偏移量?

0 投票
1 回答
114 浏览

elasticsearch - 如何使用存储文档中的属性运行查询?

假设我们有一个包含以下字段的文档索引:uid 和 hobbies。如何运行查询以查找 1 和其他用户之间的相似性,而不必先检索用户,然后再根据他的爱好运行新查询?

0 投票
2 回答
2653 浏览

elasticsearch - Elasticsearch 脚本查询按字段值获取参数

我正在尝试使用脚本查询过滤结果。我可以使用硬编码字段值访问参数值,如下所示:

但是,如果我尝试使用 doc 获取字段值,则没有过滤,我可以看到所有结果。

有没有办法动态获取参数值?

编辑:

字段 'rate' 只是 ID。它是整数,但不是我需要的值。这个想法是每次通过参数传递不同的值,而不是经常更新字段“rate”。希望这是更好的解释...

例子:

0 投票
2 回答
14960 浏览

java - Elasticsearch 无痛脚本错误

我没有 Java 经验,并且对 elasticsearch 无痛脚本语言有疑问。(无痛这个名字选得不好)。

对于以下代码,我收到错误:

无法将 [>] 操作应用于类型 [org.elasticsearch.index.fielddata.ScriptDocValues.Double] 和 [java.lang.Double]。

我用 (float) doc['newPrice'] > 0 将其转换为浮点数,但错误相同。

然后我改为"Double price = ((Double)doc['discountPrice'] > 0.0) ? doc['price'] / doc['discountPrice'] : 0; _score * params.constant * price",

并收到:

“不能从 [Double] 转换为 [double]。”

有人可以帮助我,尝试了许多具有类似错误的变体。该死的无痛语言...

0 投票
1 回答
683 浏览

elasticsearch - 使用无痛将现有字段值的一部分截断为新字段?

我有一个时间戳字段,它的值类似于这样,其中几乎所有值都采用相同的格式:

January 1st 2017, 05:29:59.000

我需要的是修剪上面应该看起来的部分:

January 1st 2017

所以我想知道的是是否可以在其painless内部使用脚本来完成上述操作Kibana?诸如将修剪后的值分配给新的脚本字段之类的东西?我想在 内进行Kibana,因为我只想在图表中显示较短的日期格式。

任何帮助,将不胜感激。

0 投票
1 回答
855 浏览

node.js - 脚本化动态更新在 ElasticSearch 中不起作用

我正在使用下面的代码来更新 elasticsearch 中的文档

但是,这会引发编译错误。当我用上面替换标记时params.tag,它会将 null 附加到当前字段,即标识params.tagnull.

0 投票
1 回答
1922 浏览

arrays - ElasticSearch 无痛脚本不起作用

我正在尝试在我的一个应用程序中使用以下 Painless 脚本查询,但它似乎不起作用。语法有问题吗?我注意到实际上不起作用的部分是 this Math.max(doc["level"].value, 1) - 1。请注意,“id”字段是关键字,“level”是字节。

谢谢!

0 投票
1 回答
912 浏览

elasticsearch - 在无痛脚本语言中访问 Elasticsearch 数组字段时进行排序

我有一个整数数组字段,例如my_integer_array.

我通过客户端存储[3, 4, 1, 2]在该字段上,我可以看到它已通过 Kibana[3, 4, 1, 2]成功设置在文档的字段上。my_integer_array

但每当我尝试使用 Painless Elasticsearch 脚本语言访问该字段时,例如doc['my_integer_array'],它返回[1, 2, 3, 4],而不是[3, 4, 1, 2]doc['my_integer_array'][0] 通过return访问它的元素1,而不是3.

似乎 Painless 提供了字段数据的排序版本,而不是原始数组本身。我错过了什么吗?我可以禁用此行为并保留订单吗?

PS 我使用elasticsearch-dsl-py Elasticsearch Python DSL 库作为 Elasticsearch 客户端。

0 投票
1 回答
5961 浏览

regex - 用于正则表达式匹配的 kibana 5 脚本字段

我想在 Kibana 5 中添加脚本字段以从消息中获取存储的过程名称。能够可视化每个 SP 的错误数量。我有“消息”字段,我可以在其中看到错误文本:

指南:https ://www.elastic.co/blog/using-painless-kibana-scripted-fields

我的计划是添加类似 Painless 脚本的内容:

而且我也试过

我如何处理 doc['message'].value?当我尝试这样做时,出现错误“Courier Fetch: 5 of 5 shards failed.” 当我尝试 doc['message.keyword'].value 时,里面没有完整的消息。我不明白我在哪里可以了解内部消息的结构以及如何引用它?

0 投票
1 回答
345 浏览

elasticsearch - 在 ElasticSearch 5.2.1 中从 groovy 脚本迁移到无痛脚本

我一直在使用 groovy 脚本作为 ScriptType.File。我的 groovy 脚本的一部分看起来像这样。

现在我正在迁移到使用无痛脚本的 ElasticSearch 5.2.1。我已经修改了我的脚本以匹配无痛语法,例如:

当我现在运行我的脚本时,它会抛出运行时错误:

它告诉我我不能使用 tokenize 。是否有任何相关功能可以替代使用?