问题标签 [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 - 无痛的 SHA1 (elasticsearch)
如何为索引中的数百万条记录更新 SHA1?
喜欢...
{
"query": ...
"script": "ctx._source.sha1 = sha1(ctx._source.field)"
}
Painless 没有像 groovy 那样内置 SHA1 功能。是否存在不使用客户端的方法?
如果我不能这样做,我该如何使用 python 呢?
sorting - 如何使用无痛脚本语言从列表列表中区分行?
我有一个 Groovy 脚本:
此脚本的输出如下所示:
从输出中可以看出 - >我基本上有6条与时间戳不同的相同行。HeapSize 和 Max HeapSize 是不同的,但这并不重要。
由于集群对于所有六个条目 /cluster1/ 都是相同的,我认为它是一个输出。理想情况下,我想应用某种unique()函数,它可以为我提供一行作为输出
如下所示:
其中 heap_used 是 6 个值的平均值以及 heap_max。我知道在 python pandas 中我可以用一个命令来完成它。但是我不知道 groovy,我一直在互联网上搜索。
编辑:不幸的是,Groovy 解决方案不会将 1:1 转移到 Painless。
elasticsearch-painless - 通过排序键遍历 HashMap
我试图弄清楚如何通过按升序排序的键来迭代 Painless HashMap 值,以下不起作用:
elasticsearch - Elasticsearch Painless 从嵌套元素计算分数
注意: 我最初发布这个问题的方式有点不同,不值得更新,因为阅读后我学到了更多。
要求
搜索文档并根据文档中的嵌套元素计算自定义分数。
结构
示例查询
孤立无痛
错误
在类型为 [book] 的映射中未找到 [topics] 的字段
问题
- 怎么了?
- 该怎么办?
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),我得到了正确的值。
date - ElasticSearch Reindex API 和访问日期字段的无痛脚本
我尝试熟悉ElasticSearch 的 Reindexing API和 Painless脚本的使用。
我有以下模型:
我想从test-v1
to重新索引所有文档test-v2
并对它们应用一些转换(例如提取 的年份部分dateOfBirth
,将日期值转换为时间戳等)并将结果保存为新字段。但是当我尝试访问它时遇到了问题。
当我拨打以下电话时,出现错误:
和回应:
根据本教程 Date fields are exposed as ReadableDateTime so they support methods like getYear, and getDayOfWeek.
,实际上,参考文献提到了那些作为支持的方法。
尽管如此,响应中仍提到[java.lang.String]
该dateOfBirth
属性的类型。我可以将其解析为例如 OffsetDateTime,但我想知道为什么它是一个字符串。
有人建议我做错了什么吗?
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
我相信我要求太多了。请帮助或任何相关的文档链接将不胜感激。希望问题很清楚。如有必要,我会提供更多详细信息。
elasticsearch - 朋友到朋友列表的弹性搜索映射
我们已经开始在我们的项目中使用elasticsearch,我们将用户数据和他的朋友列表存储为嵌套对象,并嵌套到存储朋友朋友列表的嵌套对象中,因为我们在进行全局搜索时需要这些数据。现在我们正在将这些数据与我们的数据库实时同步,所以这对实时同步 50-100 TPS 是否有好处,否则将来会产生问题。
我们需要创建复杂的查询来更新数据,因为我们在第二级管理朋友列表。那么如何轻松创建高级脚本,我已经在 Google 中检查过,但没有找到任何详细信息。
如果我的做法是错误的,请告诉我。
elasticsearch - 如何在使用重新索引时转换为大写并删除特定字段?
我正在尝试从 ES 1.4 迁移到 ES 5.5。在其中一个索引中,我需要更改字段的名称并将其值转换为大写。我可以通过更改字段名称来重新索引并删除不需要的字段,但在将值转换为大写时需要帮助。
这是我尝试过的
上面的 POST 请求能够删除“product_name”并使用它的值创建“product”。因此,为了将“产品”文档值大写,我尝试了下面的内联脚本,但它给出了一个 null_pointer_exception。
我是 Elasticsearch 脚本的新手。请帮忙。