Upserting字段不适用于elasticsearch-php

时间:2018-02-02 03:42:10

标签: elasticsearch

elasticsearch-php 6.0中的

句子:

这意味着upsert将尝试运行更新脚本,但如果文档不存在(或者您尝试更新的字段不存在),则会插入默认值。

当我尝试将字段插入现有文档时,它不起作用并返回null_pointer_exception。尝试使用curl会返回相同的结果。

Elasticsearch Reference [6.1]没有提到可以使用字段插入字段。也许有版本问题。没有Elasticsearch-PHP [6.1] !!

参考文献中的示例:

curl -XPOST 'localhost:9200/test/type1/1/_update?pretty' -H 'Content-Type: application/json' -d'
{
    "script" : {
        "source": "ctx._source.ava += params.count",
        "lang": "painless",
        "params" : {
            "count" : 4
        }
    },
    "upsert" : {
        "ava" : 1
    }
}
'

当文档存在且字段“ava'缺席。

那么,问题是如何将字段嵌入到现有文档中?卷曲的例子很好,谢谢。

1 个答案:

答案 0 :(得分:0)

如果ava字段不存在,则预期NPE。改为改变你的脚本:

{
    "script" : {
        "source": "ctx._source.ava = (ctx._source.ava ?: 0) + params.count",
        "lang": "painless",
        "params" : {
            "count" : 4
        }
    },
    "upsert" : {
        "ava" : 1
    }
}