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

elasticsearch - 无痛的 SHA1 (elasticsearch)

如何为索引中的数百万条记录更新 SHA1?

喜欢...

{ "query": ... "script": "ctx._source.sha1 = sha1(ctx._source.field)" }

Painless 没有像 groovy 那样内置 SHA1 功能。是否存在不使用客户端的方法?
如果我不能这样做,我该如何使用 python 呢?

0 投票
1 回答
651 浏览

sorting - 如何使用无痛脚本语言从列表列表中区分行?

我有一个 Groovy 脚本:

此脚本的输出如下所示:

从输出中可以看出 - >我基本上有6条与时间戳不同的相同行。HeapSize 和 Max HeapSize 是不同的,但这并不重要。

由于集群对于所有六个条目 /cluster1/ 都是相同的,我认为它是一个输出。理想情况下,我想应用某种unique()函数,它可以为我提供一行作为输出

如下所示:

其中 heap_used 是 6 个值的平均值以及 heap_max。我知道在 python pandas 中我可以用一个命令来完成它。但是我不知道 groovy,我一直在互联网上搜索。

编辑:不幸的是,Groovy 解决方案不会将 1:1 转移到 Painless。

0 投票
1 回答
1057 浏览

elasticsearch-painless - 通过排序键遍历 HashMap

我试图弄清楚如何通过按升序排序的键来迭代 Painless HashMap 值,以下不起作用:

0 投票
1 回答
2030 浏览

elasticsearch - Elasticsearch Painless 从嵌套元素计算分数

注意: 我最初发布这个问题的方式有点不同,不值得更新,因为阅读后我学到了更多。

要求

搜索文档并根据文档中的嵌套元素计算自定义分数。

结构

示例查询

孤立无痛

错误

在类型为 [book] 的映射中未找到 [topics] 的字段

问题

  • 怎么了?
  • 该怎么办?
0 投票
0 回答
789 浏览

elasticsearch - 如何使用无痛脚本在 Kibana 5 中将关键字转换为整数?

在此处输入图像描述我想Hour在 Kibana 5 的条形图中按升序排列值:

问题是订单0, 1, 10, 2, ...不是0, 1, 2, 3, .... 可能的原因是这Hour是一个关键字,而不是整数。在 Elasticsearch 中,我可以看到"Hour": "1"等。

是否可以Hour在 Kibana 中即时将值转换为整数?

0 投票
0 回答
314 浏览

java - Elasticsearch 5.5 无痛脚本查询返回值的返回值问题

我正在使用带有过滤器的 Elasticsearch 5.5 API FunctionScoreQueries。这里的目标是模仿 LinearDecayFunction,但是因为我想要使用的值包含在文档中,并且在我的 java 应用程序中不可用,所以我正在创建自己的脚本函数。

在我的用例中,我正在处理日期,如果文档包含在某个日期和该日期减去 36 个月之间,那么我想从 0 到 1 对我的文档进行评分。

这是java代码:

最后我得到了两个日期之间的月数(这个数字是从 0 到 36),并希望得到这个数字除以 36。

第一个问题

如果我的脚本的返回值低于 1,我就不能让它工作,这正常吗?

输出 :

ES juste 将值固定为 1,忽略我的脚本函数。

第二个问题:

(作为第一个问题的解决方法,我返回 1 + monthBetween/36.0 在我的示例中,那么我的全局分数中的偏移量为 1)

如果我返回变量 monthBetween,我得到 35,这是正确的,因为我的日期之间的偏移量实际上是 35 个月。

当我返回1+monthBetween/36.0时结果是正确的(1,972222222),但逻辑很糟糕,因为日期与预期的日期相差甚远,因此我希望分数离 1 更近。然后我2-monthBetween/36.0为了测试而返回。Elasticsearch 返回 1.9444444 作为结果。这在数学上是不正确的,我不明白为什么。

编辑:我必须补充一点,如果我将我的 return 语句设置为2-35.0/36.0(删除我的变量 monthBetween),我得到了正确的值。

0 投票
0 回答
1887 浏览

date - ElasticSearch Reindex API 和访问日期字段的无痛脚本

我尝试熟悉ElasticSearch 的 Reindexing API和 Painless脚本的使用。

我有以下模型:

我想从test-v1to重新索引所有文档test-v2并对它们应用一些转换(例如提取 的年份部分dateOfBirth,将日期值转换为时间戳等)并将结果保存为新字段。但是当我尝试访问它时遇到了问题。

当我拨打以下电话时,出现错误:

和回应:

根据本教程 Date fields are exposed as ReadableDateTime so they support methods like getYear, and getDayOfWeek.,实际上,参考文献提到了那些作为支持的方法。

尽管如此,响应中仍提到[java.lang.String]dateOfBirth属性的类型。我可以将其解析为例如 OffsetDateTime,但我想知道为什么它是一个字符串。

有人建议我做错了什么吗?

0 投票
1 回答
494 浏览

elasticsearch - ElasticSearch 5.6 中的 MySql 按值排序

弹性搜索版本:5.6

我已经在 ElasticSearch 中导入了 MySQL 数据,并根据需要向弹性搜索添加了映射。以下是该列的一种映射application_status

映射:

在上面的映射中,我可以使用以下查询进行简单的排序(asc或):desc

这是MySql相当于

在以下问题上需要帮助: 我有基于以下排序的 MySQL 查询application_status

请帮助我在 ElasticSearch 中编写相同的查询。我无法在 ElasticSearch中找到order by value等价物。strings在网上搜索,我明白,我应该使用sorting scripts但找不到任何合适的文档。

我有以下查询,它只是进行简单排序。

在上面的查询中,我没有使用params部分,因为我不知道如何使用它type: string

我相信我要求太多了。请帮助或任何相关的文档链接将不胜感激。希望问题很清楚。如有必要,我会提供更多详细信息。

0 投票
1 回答
457 浏览

elasticsearch - 朋友到朋友列表的弹性搜索映射

我们已经开始在我们的项目中使用elasticsearch,我们将用户数据和他的朋友列表存储为嵌套对象,并嵌套到存储朋友朋友列表的嵌套对象中,因为我们在进行全局搜索时需要这些数据。现在我们正在将这些数据与我们的数据库实时同步,所以这对实时同步 50-100 TPS 是否有好处,否则将来会产生问题。

我们需要创建复杂的查询来更新数据,因为我们在第二级管理朋友列表。那么如何轻松创建高级脚本,我已经在 Google 中检查过,但没有找到任何详细信息。

如果我的做法是错误的,请告诉我。

0 投票
1 回答
644 浏览

elasticsearch - 如何在使用重新索引时转换为大写并删除特定字段?

我正在尝试从 ES 1.4 迁移到 ES 5.5。在其中一个索引中,我需要更改字段的名称并将其值转换为大写。我可以通过更改字段名称来重新索引并删除不需要的字段,但在将值转换为大写时需要帮助。

这是我尝试过的

上面的 POST 请求能够删除“product_name”并使用它的值创建“product”。因此,为了将“产品”文档值大写​​,我尝试了下面的内联脚本,但它给出了一个 null_pointer_exception。

我是 Elasticsearch 脚本的新手。请帮忙。