【问题标题】:remote_transport_exception: When partially updating elasticsearch document using scriptremote_transport_exception:使用脚本部分更新弹性搜索文档时
【发布时间】:2017-03-25 17:34:58
【问题描述】:

我正在使用以下结构部分更新文档

$params = [
                'index' => self::$currentIndex[self::INDEX_TYPE_SEARCH],
                'type'  => self::TYPE_PRODUCT,
                'id'    => $product_id,
                'body'  => [
                    'script' => 'ctx._source.coupons += coupon',
                    'params' => ['coupon' => array($product_body)],
                ]
            ];

但是我收到以下错误:

remote_transport_exception: [Gee][127.0.0.1:9300][indices:data/write/update[s]]

知道结构是否不正确吗?

【问题讨论】:

  • 问题在于现有的文档结构。旧的优惠券结构与新的优惠券结构不同,因此我收到了错误:{"error" : "reason":"failed to run inline script [ctx._source.coupons+=coupon] using lang [groovy]","caused_by":{"type":"class_cast_exception","reason":"java.util.HashMap cannot be cast to java.util.Map$Entry"}}},"status":400}"

标签: php elasticsearch lucene


【解决方案1】:

如果您不想将值添加到数组中,那么您可以这样做,

$params['id'] = $product_id;
$params['body'] = array(
            'script' => array(
                "inline" => "ctx._source.coupons.add(params.coupon)",
                "lang" => "painless",
                "params" => ['coupon' => array($product_body)]
            )
        );

这应该对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多