当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch无痛脚本错误

史良哲
2023-03-14

我没有Java经验,我对elasticsearch无痛脚本语言有问题。(这个名字叫“无痛”,选得不好)。

对于下面的代码,我得到了错误:

{"lang": "painless",
"inline": "float price = doc['newPrice'] > 0.0 ? doc['price'] / doc['newPrice'] : 0; _score * params.constant * price",
"params": {"constant": 1.2}}}}

无法应用 [

我用(float) doc['newPrice']将它绑定为float

然后我改为<code>“Double price=((Double)doc['discountPrice']

并收到:

“无法从[双]铸造到[双]。”

有人可以帮助我,尝试了很多类似错误的变化。该死的无痛语言...

共有2个答案

太叔坚
2023-03-14
doc['newPrice']

不同于

doc['newPrice'].value

你应该以后再用

许兴文
2023-03-14

您只是缺少 .value 即可访问字段值。

您的脚本应该是这样的:

double price = doc['newPrice'].value > 0.0 ? doc['price'].value / doc['newPrice'].value : 0; _score * params.constant * price
 类似资料:
  • 我想从特定字段中搜索关键字并返回文档。在这些文档之上,我希望遍历每个嵌套对象,并从选定文档的同一特定字段中再次搜索关键字。 如果关键字存在,则检查:如果布尔isCurrent = True,则设置isCurrent=0,并将该值追加到列表中;否则,如果isCurrent = False,则取当前日期时间的差值,结束日期时间,并获得以月为单位的值,并将该值追加到列表中。 最后,从每个文档的列表中获取

  • 以下是我的查询的简化版本: 希望有办法解决这个... 提前感谢你的帮助

  • 我试图创建一个简单的脚本,通过自定义参数数组过滤嵌套字段数组,通过我的for循环抛出错误。 映射 源(_S) 脚本如下所示: 如果我用一个简单的字符串替换“params['自定义字段'][I]”部分,它工作得很好,所以我猜我的问题就在那里,但不知道到底是什么。 另一个注意事项,知道如何构造我的查询,以便在“_source”中返回来自无痛脚本的结果吗? 最后,我想做这样的事情: 但首先我想让它使用上

  • 我使用的是 ES 版本 7.0。我有一个商店索引,其中有空闲时间(开放和关闭时间)在UTC时间。我在 Integer 中存储了时间,以便它可以轻松地与无痛脚本中的当前时间匹配。 下面是一个示例文档: 下面是使用无痛脚本的查询: 上述查询适用于星期三的时间300,结果中给出了上述文档,但不适用于星期四的时间1400。看起来脚本总是匹配可用性数组中的第一个值。 我还试图循环浏览可用性日,但这并没有给我

  • 我是ES的新手,我正在尝试使用聚合编写搜索查询。 在写同样的东西时,我面临着无痛脚本的问题。 哪里可以得到完整的无痛脚本文档,用于弹性搜索?

  • 我正在尝试用elasticsearch的脚本语言<code>无痛地操纵日期。具体来说,我试图增加4小时,即14400秒。 这将导致< code >无法对类型[org . elastic search . index . field data . scriptdocvalues . longs]和[java.lang.Integer]应用[ ]操作。 谢谢