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