问题标签 [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.
java - Elasticsearch 无痛脚本查询循环
我们目前正在构建一个基于 elasticsearch 的搜索工具,我们的查询涉及将最接近的值与用户输入值进行匹配。假设用户输入 [1,10,100,1000,10000] 它应该返回数组中每个元素的索引中可用的最接近的值。
现在我们正在使用以下查询一次检索一个值,并且我们通过循环传递用户输入数组,它真的很慢。
我们的要求是该因子将采用整数数组而不是单个值,并给出它在索引中找到的第一个最接近的值。
下面贴出完整的python函数(Python)
任何帮助将不胜感激。谢谢。
elasticsearch - 如何根据弹性搜索> = 5.5中的术语位置对结果进行排序?
由于_index
在 Painless 脚本中不再可用,因此过去通过从_index
in访问 term-offset 来工作的解决方案script_score
不再起作用,例如这里建议的一个:Scoring by term position in ElasticSearch? .
现在最好的方法是什么?
非常感谢您的帮助!
elasticsearch - 重新索引期间的弹性搜索无痛脚本问题
我想将 geoip 的旧数据重新索引到地理点。
以前的数据包含这种格式的位置。
我想像这样在数组中重新索引地理点中的位置
这是映射
这是我执行重新索引的请求。
质疑 它不会覆盖位置:{} 到位置:[]
elasticsearch - Easticsearch重新索引多类型父/子索引(v5.0)以加入类型索引(v6.2)
我正在将我的索引数据从 ES 5.0(父子)重新索引到 ES 6.2(连接类型)
索引 ES 5.0 中的数据以不同类型存储为父子文档,对于重新索引,我在新集群中创建了基于 6.2 的新索引/映射。
父文档完美地重新索引到新索引,但子文档抛出错误如下
我用来重新索引数据的脚本
我已经在无痛脚本中传递了路由字段,因为文档是来自源索引的动态文档。
目标索引的映射
我的示例源文档
elasticsearch - 如何在 Elasticsearch 的嵌套字段中创建嵌套对象并将其添加到嵌套字段中?
https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html
考虑:
当我运行一个无痛的脚本时:
它不工作。我试过但找不到其他人发起的任何相关文件或讨论。
elasticsearch - Elasticsearch 自定义评分函数测试空日期值
我在任何地方都找不到如何在 ES 自定义评分函数中测试空值的示例。根据文档,脚本是常规的,根据日志,脚本是在无痛的情况下评估的,但即使如此,我仍然对一些错误感到困惑
这似乎是说我正在尝试将双精度值转换为布尔值并引发,但我需要测试非空值。
我应该如何编写我的评分脚本?
编辑:我知道在无痛中我不能使用三元? :
运算符,所以我必须明确地写doc['xx'].value != null
。但是,对于使用空值索引的日期,这似乎会产生奇怪的结果。似乎在无痛的情况下,该值不为空(尽管它确实null
在 json 中GET /_search
)并且以下内容不起作用
并且似乎总是返回 0(好像空日期实际上不为空)。我看到有些人报告了一些奇怪的默认日期,在这种情况下,我如何将此日期与 Date.now 之类的日期进行比较?
elasticsearch - Kibana:在 Kibana 中将字段映射为“日期”
我用字典填充了 ElasticSearch。我想将一个键映射到 Kibana 中的日期:
rep_ID:TZ14 createdOn:1,522,158,913,843
键“creatOn”的值应该是日期。我尝试了开发工具中的无痛脚本:
它给了我一个错误,它不起作用。我删除了数据。然后我运行了那个脚本,然后我再次填充了数据。我也以相反的方式尝试过。有什么问题?
node.js - 向空对象添加项目
我使用go-mysql- elasticsearch 在 MySQL 和 ElasticSearch 之间同步数据。这样,一旦在 MySQL 中创建了一个项目,它就会在 ElasticSearch 中自动创建。
ElasticSearch 中的映射是自动创建的,这部分工作没有问题。我所有的数据都是同步的。
当我尝试将新映射添加到 ElasticSearch 索引并修改它们时,就会出现问题。
我的索引叫做products,类型也是products。我添加了这样的新映射:
这按预期工作,当我访问时:
我可以看到新映射已添加到产品索引中:
但是,当我尝试更新产品以向新字段添加值时,我得到了一个非法参数异常,如下所示:
抛出非法参数异常:
这是有道理的,因为产品没有为此设置任何值,这意味着它为空。
这里的问题是,如何更新该空字段?
谷歌没有为我提供任何可靠的答案,因此这篇文章。
为了澄清,我试图最终实现这一目标:
- 如何更新 ElasticSearch 中的空对象?
甚至可能吗?
我错过了什么吗?
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 中执行以下操作并最终实现:
elasticsearch - 在嵌套结构中检索最新日期的无痛脚本
我正在尝试修改这个无痛脚本,以便可以从嵌套结构中检索 MAX 日期。
假装我有这样的映射:
我想要做的是从 test.field3 中检索 MAX 日期
我尝试了一些方法,例如:
任何帮助都会非常有帮助!我觉得我遇到了日期解析问题,但也许我错了。
如果有人感到游戏,这是一个文件: