问题标签 [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.
elasticsearch - 在 Elasticsearch 中,如何将时区应用于脚本日期操作?
通过下面的聚合并使用 ES5,我想根据给定的时区(作为 TZ 数据库的标识符提供)获取 dayOfWeek 和 hourOfDay。
如何编辑"doc['created'].date.dayOfWeek'
以调整偏移量?
elasticsearch - 如何使用存储文档中的属性运行查询?
假设我们有一个包含以下字段的文档索引:uid 和 hobbies。如何运行查询以查找 1 和其他用户之间的相似性,而不必先检索用户,然后再根据他的爱好运行新查询?
elasticsearch - Elasticsearch 脚本查询按字段值获取参数
我正在尝试使用脚本查询过滤结果。我可以使用硬编码字段值访问参数值,如下所示:
但是,如果我尝试使用 doc 获取字段值,则没有过滤,我可以看到所有结果。
有没有办法动态获取参数值?
编辑:
字段 'rate' 只是 ID。它是整数,但不是我需要的值。这个想法是每次通过参数传递不同的值,而不是经常更新字段“rate”。希望这是更好的解释...
例子:
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]。”
有人可以帮助我,尝试了许多具有类似错误的变体。该死的无痛语言...
elasticsearch - 使用无痛将现有字段值的一部分截断为新字段?
我有一个时间戳字段,它的值类似于这样,其中几乎所有值都采用相同的格式:
January 1st 2017, 05:29:59.000
我需要的是修剪上面应该看起来的部分:
January 1st 2017
所以我想知道的是是否可以在其painless
内部使用脚本来完成上述操作Kibana
?诸如将修剪后的值分配给新的脚本字段之类的东西?我想在 内进行Kibana
,因为我只想在图表中显示较短的日期格式。
任何帮助,将不胜感激。
node.js - 脚本化动态更新在 ElasticSearch 中不起作用
我正在使用下面的代码来更新 elasticsearch 中的文档
但是,这会引发编译错误。当我用上面替换标记时params.tag
,它会将 null 附加到当前字段,即标识params.tag
为null
.
arrays - ElasticSearch 无痛脚本不起作用
我正在尝试在我的一个应用程序中使用以下 Painless 脚本查询,但它似乎不起作用。语法有问题吗?我注意到实际上不起作用的部分是 this Math.max(doc["level"].value, 1) - 1
。请注意,“id”字段是关键字,“level”是字节。
谢谢!
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 客户端。
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 时,里面没有完整的消息。我不明白我在哪里可以了解内部消息的结构以及如何引用它?
elasticsearch - 在 ElasticSearch 5.2.1 中从 groovy 脚本迁移到无痛脚本
我一直在使用 groovy 脚本作为 ScriptType.File。我的 groovy 脚本的一部分看起来像这样。
现在我正在迁移到使用无痛脚本的 ElasticSearch 5.2.1。我已经修改了我的脚本以匹配无痛语法,例如:
当我现在运行我的脚本时,它会抛出运行时错误:
它告诉我我不能使用 tokenize 。是否有任何相关功能可以替代使用?