尝试更新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}

非常感谢。

最佳答案

您尝试访问对象prices_list的属性5,但是您说自己在更新之前就删除了该对象。
if (ctx._source.prices_list.5 == null) VS ctx._source.remove('prices_list')
您不能检查不存在对象的属性。

关于php - Elasticsearch 更新legal_argument_exception,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52513158/

10-13 08:21