问题标签 [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 回答
3632 浏览

elasticsearch - elasticsearch doc['...'] 数组和顺序

我需要从脚本访问存储在数组中的文档值。数组中项目的顺序很重要。

使用 doc['...'] 检索数组会混淆顺序:-(

假设一个像这样的简单文档

使用此查询检索:

将以反向(排序)顺序返回数组:[1,2,3,4,5] 有没有办法防止这种行为?

我不能求助于使用 _source,因为我需要在不支持 _source 的“has_child”查询中使用它。

有任何想法吗?

0 投票
2 回答
291 浏览

elasticsearch - 从字段数组中提取文本

称为“资源”的字段之一具有以下 2 个内部文档。

我需要拆分 ARN 字段并获取它的最后一部分。即“ reports_201706.schema ”最好使用脚本字段。


我试过的:

1)我检查了文件列表,发现只有2个条目resources.accountId和resources.type

2)我尝试使用日期时间字段,它在脚本文件选项(表达式)中正常工作。

3)但同样不适用于其他文本字段,例如

收到此错误:

这意味着我需要更改映射。有没有其他方法可以从对象中的嵌套数组中提取文本?


更新:

请在此处访问示例 kibana...

https://search-accountact-phhofxr23bjev4uscghwda4y7m.us-east-1.es.amazonaws.com/_plugin/kibana/

搜索“ebs_attach.png”,然后检查资源字段。您将看到 2 个这样的嵌套数组...

我需要拆分 ARN 字段并提取最后一部分,即“ebs_attach.png”

如果我可以以某种方式将其显示为脚本字段,那么我可以在发现选项卡上并排看到存储桶名称和文件名。


更新 2

换句话说,我正在尝试将此图像中显示的文本提取为发现选项卡上的新字段。

在此处输入图像描述

0 投票
1 回答
1325 浏览

elasticsearch - ElasticSearch/Painless:迭代时如何跳过一个项目?

我有一个迭代列表的 for 循环。如果列表包含某个值,例如“5”,我希望循环跳过该值。但是 Painless 似乎决定不允许我使用空的 if 块或使用 continue 语句。我怎样才能做到这一点?

0 投票
0 回答
402 浏览

elasticsearch - Elasticsearch 无痛脚本命令数组项

我需要有关在 elasticsearch 中获取具有索引([0] 例如)的数组项的帮助。无论是无痛或无脚本的行为。

这是我的小测试映射、文档和结果;

我索引了一份这样的文件;

当我使用无痛脚本获得“道具”值时,道具的值会按顺序获取。我不想要这个,我该如何解决?

结果是;

0 投票
1 回答
1363 浏览

sorting - 无痛脚本 - 将字符串转换为 def

我正在尝试获取字符串的编号。我正在使用正则表达式模式执行此操作。当我得到结果时,我得到类似“1”、“10”、“2”的东西。我想对它进行排序,所以我需要在左边添加零才能​​自然地对它们进行排序。

我的脚本在这里:

当我尝试执行命令时,出现以下错误:

如何在不使用 String.Formatter 的情况下添加零?

我在哪里尝试从 STRING 转换为 DEF?

0 投票
2 回答
1706 浏览

c# - 如何在 Elasticsearch 上使用 NEST 进行查询中的脚本字段?

我有一个具有坐标字段的 POCO,并且使用 NEST 进行的映射和地理距离搜索都按预期工作。但是,我尝试对 NEST 执行的操作也是返回与 GeoDistance 查询中指定的点的距离,作为搜索结果的一部分。到目前为止,我的研究表明有两种方法可以做到这一点:

我决定使用选项 2,下面是一些代码的样子:

和查询本身:

虽然直接针对 elasticsearch 运行此查询似乎很好,但当我这样做 NEST 时,我遇到了一些问题:

  • 我无法访问我在 POCO 对象中定义的“距离”脚本字段,除非我将其添加到定义中
  • 如果我为 User POCO 创建一个子类,ElasticSearch 不会反序列化父类中定义的字段(这意味着我只得到 Distance 脚本字段,而不是 ID 或 Location 字段,并且 Documents 数组对象都是 Null)
  • 我试图在我用于映射的实际 POCO 和搜索结果对象之间保持分离,但我不知道如何标记属性/字段,以便 NEST 不会映射它,但会反序列化结果将脚本字段添加到属性中

我的问题是:在 NEST 中访问脚本字段的推荐方法是什么?我必须完全放弃自动映射吗?或者即使我不是特别想对结果进行排序,我也应该选择排序选项?

0 投票
1 回答
35 浏览

elasticsearch - Elasticsearch,为什么添加元素总是为空

我有一个 Elasticsearch-DB 并想将元素(字符串)添加到数组中。在这里讨论https://discuss.elastic.co/t/append-to-existing-field/16423/2我建立了一个玩具模型。我初始化:

并使用更新数组

不幸的是,更新的结果总是“null”而不是“c”:

我究竟做错了什么?

0 投票
1 回答
2645 浏览

elasticsearch - 通过查询API在elasticsearch更新中选择带有参数的文档字段

弹性搜索版本 = 5.5

我继承了一些代码,这些代码通过查询 API的更新将任意文档字段更新为任意值,如下所示:

由于每分钟最大编译次数断路器,这有时会导致查询失败。

部分更新适用于这种情况,但据我所知,部分更新仅在标准更新 API 中受支持,而不是通过查询 API 进行更新:

至少,作为一个 ES 新手,我认为这就是那个错误的含义。doc在查询 API 文档的更新中也没有提及。

假设我是对的,部分更新不起作用,按照脚本指南中的建议参数化脚本似乎是下一步,但似乎没有任何方法可以访问参数指定的源字段:

尝试通过doc-values访问该字段似乎也不起作用:

有什么方法可以修复这个脚本还是需要更广泛的重构?

0 投票
2 回答
16598 浏览

elasticsearch - elasticsearch-painless - 操作日期

我正在尝试使用 elasticsearch 的脚本语言来操作日期painless。具体来说,我试图增加 4 小时,即 14,400 秒。

这抛出Cannot apply [+] operation to types [org.elasticsearch.index.fielddata.ScriptDocValues.Longs] and [java.lang.Integer].

谢谢

0 投票
1 回答
1442 浏览

elasticsearch - 如何对弹性搜索聚合桶数据应用数学运算

我正在使用弹性搜索 5.5.1。我的要求是在以下数据集上应用以下公式:(doc_count*100/10):

我应该能够为每个存储桶项目找到解决方案。我不想使用 Java SDK 来解决这个问题,因为要求只使用弹性搜索 REST API。