弹性搜索更新legal_argument_exception

时间:2018-09-26 08:22:00

标签: php elasticsearch

尝试更新ES文档时,我遇到了一个小问题。

当前,我的php更新方法如下: 而我得到这个错误:

  {"error":{"root_cause":

[{"type":"remote_transport_exception","reason":"[DVcjUVo][127.0.0.1:9300][indices:data/write/update[s]]"}],"type":"illegal_argument_exception","reason
  ":"failed to execute script","caused_by":{"type":"script_exception","reason":"runtime error","script_stack":["if (ctx._source.prices_list.5 == null) { ","
          ^---- HERE"],"script":"if (ctx._source.prices_list.5 == null) { ctx._source.list.5 = [params.new_price_data] } else { ctx._source.list.5.add(params.new
  _price_data) }","lang":"painless","caused_by":{"type":"null_pointer_exception","reason":null}}},"status":400}

非常感谢。

1 个答案:

答案 0 :(得分:1)

您尝试访问对象prices_list的属性5,但是您说自己在更新之前删除了该对象。

if (ctx._source.prices_list.5 == null) VS ctx._source.remove('prices_list')

您不能检查不存在的对象的属性。