elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python 如果一个属性不存在,如何将它插入到文档中?

Python 如果一个属性不存在,如何将它插入到文档中?,python,elasticsearch,Python,elasticsearch,我试图在python上使用bulk将一个名为“users”的属性插入到一个文档中 像这样: 如果不存在,我如何添加购买?在这种情况下,我不希望有人插手。如果该值已被索引,则禁止更改该值。您可以尝试使用脚本upsert执行此操作,如下所示: actions = [ { '_op_type': 'update', "_index": index, "_type": "users", "_id": s['id_user'],

我试图在python上使用bulk将一个名为“users”的属性插入到一个文档中

像这样:


如果不存在,我如何添加购买?在这种情况下,我不希望有人插手。如果该值已被索引,则禁止更改该值。

您可以尝试使用脚本upsert执行此操作,如下所示:

actions = [
    {
        '_op_type': 'update',
        "_index": index,
        "_type": "users",
        "_id": s['id_user'],
        "script": {
          "source": "ctx._source.purchases = ctx._source.purchases ?: params.purchases",
          "params": {
            "purchases": []
          }
        },
        "scripted_upsert": true,
        "upsert": {}
    }
    for i, s in users.iterrows()
]
success, failure = self.db.bulk(actions, stats_only=True)

如果源代码中尚未定义,则只能在
params
中为
purchases
数组分配数组。

Awesome!谢谢你!
actions = [
    {
        '_op_type': 'update',
        "_index": index,
        "_type": "users",
        "_id": s['id_user'],
        "script": {
          "source": "ctx._source.purchases = ctx._source.purchases ?: params.purchases",
          "params": {
            "purchases": []
          }
        },
        "scripted_upsert": true,
        "upsert": {}
    }
    for i, s in users.iterrows()
]
success, failure = self.db.bulk(actions, stats_only=True)