内联脚本错误 [英] Inline Script error

查看:243
本文介绍了内联脚本错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  client.prepareUpdate(result, typeName,1)
.setScript(new Script(ctx._source.gender = doc ['+ AggregateValue_First +']。value * doc ['+ AggregateValue_Second +']。 INLINE,null,null))
.get();

当我执行它,我得到

  java.lang.IllegalArgumentException:无法执行脚本

我的日志看起来像

 导致:ScriptException [无法运行内嵌脚本
[ctx._source.gender =
doc ['AVG_PRICE_PER_UNIT']。value * doc ['NUMBER_OF_UNITS']。value]使用
lang [groovy]];嵌套:
NotSerializableExceptionWrapper [missing_property_exception:No such
property:doc for class:af9b76c11012333a0eeba6af6df35125322f36b8];

org.elasticsearch.script.groovy.GroovyScriptEngineService $ GroovyScript.run(GroovyScriptEngineService.java:320)

org.elasticsearch.action.update.UpdateHelper.executeScript( UpdateHelper.java:252)... 14更多



引起的:NotSerializableExceptionWrapper [missing_property_exception:
没有这样的属性:doc类:
af9b76c11012333a0eeba6af6df35125322f36b8] at
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at
org.codehaus.groovy.vmplugin.v7.IndyGuardsFiltersAndSignatures.unwrap(IndyGuardsFiltersAndSignatures。 java:177)
at
org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:228)
at
af9b76c11012333a0eeba6af6df35125322f36b8.run(af9b76c11012333a0eeba6af6df35125322f36b8:1)

org.elasticsearch.script.groovy.GroovyScriptEngineService $ GroovyScript $ 1.run(GroovyScriptEngineService.java:313)
at java.security.AccessController.doPrivileged(Native Method)at
org.elasticsearch.script.groovy.GroovyScriptEngineService $ GroovyScript.run(GroovyScriptEngineService.java:310)
...另外

有人可以帮我吗?



p>


client.prepareUpdate(result,typeName,1)。setScript(newScript(ctx._source.gender.value =
ctx._source ['+ AggregateValue_First +']。value *
ctx._source ['+ AggregateValue_Second +']。value,ScriptType.INLINE,
null,null)).get ();


现在的错误是像


log4j:WARN没有找到记录器
(org.elasticsearch.node)的appender。 log4j:WARN请正确初始化log4j
系统。 log4j:WARN请参阅
http://logging.apache.org/log4j /1.2/faq.html#noconfig 了解更多信息。
java.lang.IllegalArgumentException:无法执行脚本
org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:257)

org.elasticsearch。 $ update $ org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:174)

org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:168)
at
org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:66)

org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction $ ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction .java:244)
at
org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperat ionAction $ ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:240)
at
org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33)
at
org.elasticsearch。 transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75)

org.elasticsearch.transport.netty.MessageChannelHandler $ RequestHandler.doRun(MessageChannelHandler.java:300)
at
org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源)
在java.lang.Thread.run(未知来源)导致:
ScriptException [无法运行内联脚本[ctx._source.gender.value
= ctx._source ['AVG_PRICE_PER_UNIT']。value * ctx._source ['5']。value] using lang [groovy]];嵌套:AssertionError [BUG! UNCAUGHT EXCEPTION:
member is private:java.lang.Integer.value / int / getField,from
org.codehaus.groovy.vmplugin.v7.IndyInterface];嵌套:
NotSerializableExceptionWrapper [illegal_access_exception:member is
private:java.lang.Integer.value / int / getField,from
org.codehaus.groovy.vmplugin.v7.IndyInterface];在
org.elasticsearch.script.groovy.GroovyScriptEngineService $ GroovyScript.run(GroovyScriptEngineService.java:320)
at
org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java: 252)
... 14更多引起的:java.lang.AssertionError:BUG! UNCAUGHT
EXCEPTION:member is private:java.lang.Integer.value / int / getField,
from org.codehaus.groovy.vmplugin.v7.IndyInterface at
org.codehaus.groovy。 vmplugin.v7.Selector $ PropertySelector.chooseMeta(Selector.java:311)

org.codehaus.groovy.vmplugin.v7.Selector $ MethodSelector.setCallSiteTarget(Selector.java:954)
at
org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:224)
at
a45669ea4b74cc2cb4371072fd14ab69cb5dd5f6.run(a45669ea4b74cc2cb4371072fd14ab69cb5dd5f6:1)
at
org.elasticsearch.script.groovy.GroovyScriptEngineService $ GroovyScript $ 1.run(GroovyScriptEngineService.java:313)
在java.security.AccessController.doPrivileged(Native Method)at
org.elasticsearch.script。 groovy.GroovyScriptEngineService $ GroovyScript.run(GroovyScriptEngineService.java:310)
... 15其他原因:
NotSerializableExceptionWrapper [illegal_access_exception:member is
private:java.lang.Integer.value / int / getField,from
org.codehaus.groovy.vmplugin.v7.IndyInterface] at
java.lang.invoke.MemberName.makeAccessException(Unknown Source )at
java.lang.invoke.MethodHandles $ Lookup.checkAccess(Unknown Source)at
java.lang.invoke.MethodHandles $ Lookup.checkField(Unknown Source)at
java.lang。 invoke.MethodHandles $ Lookup.getDirectFieldCommon(Unknown
Source)at
java.lang.invoke.MethodHandles $ Lookup.getDirectFieldNoSecurityManager(Unknown
Source)at
java.lang.invoke。 MethodHandles $ Lookup.unreflectField(未知源)
在java.lang.invoke.MethodHandles $ Lookup.unreflectGetter(未知
源)在
org.codehaus.groovy.vmplugin.v7.Selector $ PropertySelector.chooseMeta(Selector.java:302)
... 21更多



解决方案

p>尝试这个(即使用 ctx._source 而不是 doc ):

  client.prepareUpdate(result,typeName,1)
.setScript(new Script(ctx._source.gender = ctx._source ['+ AggregateValue_First + ] * ctx._source ['+ AggregateValue_Second +'],ScriptType.INLINE,null,null))
.get();


I am trying to run the Update api using Inline Scripting ,my code is

 client.prepareUpdate("result",typeName, "1")
       .setScript(new  Script("ctx._source.gender=doc['"+AggregateValue_First+"'].value*doc['"+AggregateValue_Second+"'].value",ScriptType.INLINE, null, null))
       .get();

When I am executing it , i am getting

java.lang.IllegalArgumentException: failed to execute script

my log looks like

 Caused by: ScriptException[failed to run inline script
 [ctx._source.gender =
 doc['AVG_PRICE_PER_UNIT'].value*doc['NUMBER_OF_UNITS'].value] using
 lang [groovy]]; nested:
 NotSerializableExceptionWrapper[missing_property_exception: No such
property: doc for class: af9b76c11012333a0eeba6af6df35125322f36b8];
    at
 org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:320)
    at
 org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:252)... 14 more



 Caused by: NotSerializableExceptionWrapper[missing_property_exception:
 No such property: doc for class:
 af9b76c11012333a0eeba6af6df35125322f36b8]  at
 org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
    at
 org.codehaus.groovy.vmplugin.v7.IndyGuardsFiltersAndSignatures.unwrap(IndyGuardsFiltersAndSignatures.java:177)
    at
 org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:228)
    at
 af9b76c11012333a0eeba6af6df35125322f36b8.run(af9b76c11012333a0eeba6af6df35125322f36b8:1)
    at
 org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript$1.run(GroovyScriptEngineService.java:313)
    at java.security.AccessController.doPrivileged(Native Method)   at
 org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:310)
    ... 15 more

Can someone help me with this?

i tried

client.prepareUpdate("result",typeName,"1").setScript(newScript("ctx._source.gender.value = ctx._source['"+AggregateValue_First+"'].value * ctx._source['"+AggregateValue_Second+"'].value", ScriptType.INLINE, null, null)) .get();

now the error is something like

log4j:WARN No appenders could be found for logger (org.elasticsearch.node). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. java.lang.IllegalArgumentException: failed to execute script at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:257) at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:197) at org.elasticsearch.action.update.UpdateHelper.prepare(UpdateHelper.java:80) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:174) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:168) at org.elasticsearch.action.update.TransportUpdateAction.shardOperation(TransportUpdateAction.java:66) at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:244) at org.elasticsearch.action.support.single.instance.TransportInstanceSingleOperationAction$ShardTransportHandler.messageReceived(TransportInstanceSingleOperationAction.java:240) at org.elasticsearch.transport.TransportRequestHandler.messageReceived(TransportRequestHandler.java:33) at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:75) at org.elasticsearch.transport.netty.MessageChannelHandler$RequestHandler.doRun(MessageChannelHandler.java:300) at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: ScriptException[failed to run inline script [ctx._source.gender.value = ctx._source['AVG_PRICE_PER_UNIT'].value * ctx._source['5'].value] using lang [groovy]]; nested: AssertionError[BUG! UNCAUGHT EXCEPTION: member is private: java.lang.Integer.value/int/getField, from org.codehaus.groovy.vmplugin.v7.IndyInterface]; nested: NotSerializableExceptionWrapper[illegal_access_exception: member is private: java.lang.Integer.value/int/getField, from org.codehaus.groovy.vmplugin.v7.IndyInterface]; at org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:320) at org.elasticsearch.action.update.UpdateHelper.executeScript(UpdateHelper.java:252) ... 14 more Caused by: java.lang.AssertionError: BUG! UNCAUGHT EXCEPTION: member is private: java.lang.Integer.value/int/getField, from org.codehaus.groovy.vmplugin.v7.IndyInterface at org.codehaus.groovy.vmplugin.v7.Selector$PropertySelector.chooseMeta(Selector.java:311) at org.codehaus.groovy.vmplugin.v7.Selector$MethodSelector.setCallSiteTarget(Selector.java:954) at org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:224) at a45669ea4b74cc2cb4371072fd14ab69cb5dd5f6.run(a45669ea4b74cc2cb4371072fd14ab69cb5dd5f6:1) at org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript$1.run(GroovyScriptEngineService.java:313) at java.security.AccessController.doPrivileged(Native Method) at org.elasticsearch.script.groovy.GroovyScriptEngineService$GroovyScript.run(GroovyScriptEngineService.java:310) ... 15 more Caused by: NotSerializableExceptionWrapper[illegal_access_exception: member is private: java.lang.Integer.value/int/getField, from org.codehaus.groovy.vmplugin.v7.IndyInterface] at java.lang.invoke.MemberName.makeAccessException(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.checkAccess(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.checkField(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.getDirectFieldCommon(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.getDirectFieldNoSecurityManager(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.unreflectField(Unknown Source) at java.lang.invoke.MethodHandles$Lookup.unreflectGetter(Unknown Source) at org.codehaus.groovy.vmplugin.v7.Selector$PropertySelector.chooseMeta(Selector.java:302) ... 21 more

解决方案

Try this (i.e. use ctx._source instead of doc):

client.prepareUpdate("result",typeName, "1")
   .setScript(new  Script("ctx._source.gender = ctx._source['"+AggregateValue_First+"'] * ctx._source['"+AggregateValue_Second+"']", ScriptType.INLINE, null, null))
   .get();

这篇关于内联脚本错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆