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

java - Elasticsearch 无痛脚本查询循环

我们目前正在构建一个基于 elasticsearch 的搜索工具,我们的查询涉及将最接近的值与用户输入值进行匹配。假设用户输入 [1,10,100,1000,10000] 它应该返回数组中每个元素的索引中可用的最接近的值。

现在我们正在使用以下查询一次检索一个值,并且我们通过循环传递用户输入数组,它真的很慢。

我们的要求是该因子将采用整数数组而不是单个值,并给出它在索引中找到的第一个最接近的值。

下面贴出完整的python函数(Python)

任何帮助将不胜感激。谢谢。

0 投票
0 回答
308 浏览

elasticsearch - 如何根据弹性搜索> = 5.5中的术语位置对结果进行排序?

由于_index在 Painless 脚本中不再可用,因此过去通过从_indexin访问 term-offset 来工作的解决方案script_score不再起作用,例如这里建议的一个:Scoring by term position in ElasticSearch? .

现在最好的方法是什么?

非常感谢您的帮助!

0 投票
1 回答
570 浏览

elasticsearch - 重新索引期间的弹性搜索无痛脚本问题

我想将 geoip 的旧数据重新索引到地理点。

以前的数据包含这种格式的位置。

我想像这样在数组中重新索引地理点中的位置

这是映射

这是我执行重新索引的请求。

质疑 它不会覆盖位置:{} 到位置:[]

0 投票
2 回答
1180 浏览

elasticsearch - Easticsearch重新索引多类型父/子索引(v5.0)以加入类型索引(v6.2)

我正在将我的索引数据从 ES 5.0(父子)重新索引到 ES 6.2(连接类型)

索引 ES 5.0 中的数据以不同类型存储为父子文档,对于重新索引,我在新集群中创建了基于 6.2 的新索引/映射。

父文档完美地重新索引到新索引,但子文档抛出错误如下

我用来重新索引数据的脚本

我已经在无痛脚本中传递了路由字段,因为文档是来自源索引的动态文档。

目标索引的映射

我的示例源文档

0 投票
2 回答
9008 浏览

elasticsearch - 如何在 Elasticsearch 的嵌套字段中创建嵌套对象并将其添加到嵌套字段中?

https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html

考虑:

当我运行一个无痛的脚本时:

它不工作。我试过但找不到其他人发起的任何相关文件或讨论。

0 投票
1 回答
781 浏览

elasticsearch - Elasticsearch 自定义评分函数测试空日期值

我在任何地方都找不到如何在 ES 自定义评分函数中测试空值的示例。根据文档,脚本是常规的,根据日志,脚本是在无痛的情况下评估的,但即使如此,我仍然对一些错误感到困惑

这似乎是说我正在尝试将双精度值转换为布尔值并引发,但我需要测试非空值。

我应该如何编写我的评分脚本?

编辑:我知道在无痛中我不能使用三元? :运算符,所以我必须明确地写doc['xx'].value != null。但是,对于使用空值索引的日期,这似乎会产生奇怪的结果。似乎在无痛的情况下,该值不为空(尽管它确实null在 json 中GET /_search)并且以下内容不起作用

并且似乎总是返回 0(好像空日期实际上不为空)。我看到有些人报告了一些奇怪的默认日期,在这种情况下,我如何将此日期与 Date.now 之类的日期进行比较?

0 投票
1 回答
53 浏览

elasticsearch - Kibana:在 Kibana 中将字段映射为“日期”

我用字典填充了 ElasticSearch。我想将一个键映射到 Kibana 中的日期:

rep_ID:TZ14 createdOn:1,522,158,913,843

键“creatOn”的值应该是日期。我尝试了开发工具中的无痛脚本:

它给了我一个错误,它不起作用。我删除了数据。然后我运行了那个脚本,然后我再次填充了数据。我也以相反的方式尝试过。有什么问题?

0 投票
0 回答
372 浏览

node.js - 向空对象添加项目

我使用go-mysql- elasticsearch 在 MySQL 和 ElasticSearch 之间同步数据。这样,一旦在 MySQL 中创建了一个项目,它就会在 ElasticSearch 中自动创建。

ElasticSearch 中的映射是自动创建的,这部分工作没有问题。我所有的数据都是同步的。

当我尝试将新映射添加到 ElasticSearch 索引并修改它们时,就会出现问题。


我的索引叫做products,类型也是products。我添加了这样的新映射:

这按预期工作,当我访问时:

我可以看到新映射已添加到产品索引中:

但是,当我尝试更新产品以向新字段添加值时,我得到了一个非法参数异常,如下所示:

抛出非法参数异常:

这是有道理的,因为产品没有为此设置任何值,这意味着它为空。
这里的问题是,如何更新该空字段?
谷歌没有为我提供任何可靠的答案,因此这篇文章。

为了澄清,我试图最终实现这一目标:

  • 如何更新 ElasticSearch 中的空对象?

甚至可能吗?
我错过了什么吗?

0 投票
1 回答
3370 浏览

elasticsearch - Painless (Elasticsearch) 将任何类型的值转换为整数

我正在将 Elasticsearch 脚本从 Groovy 转换为 Painless。该脚本接受一个参数,该参数可以是整数或可转换为整数的字符串(即可以是123"123")。

在 Groovy 中,执行my_val.toLong()转换两者都很好,但该方法在 Painless 中不可用。

是否有任何替代语法可以在 Painless 中做同样的事情?

我尝试使用(long) my_var进行显式转换,但我得到java.lang.String cannot be cast to java.lang.Number

简而言之,我想在 Painless 中执行以下操作并最终实现

0 投票
1 回答
522 浏览

elasticsearch - 在嵌套结构中检索最新日期的无痛脚本

我正在尝试修改这个无痛脚本,以便可以从嵌套结构中检索 MAX 日期。

假装我有这样的映射:

我想要做的是从 test.field3 中检索 MAX 日期

我尝试了一些方法,例如:

任何帮助都会非常有帮助!我觉得我遇到了日期解析问题,但也许我错了。

如果有人感到游戏,这是一个文件: