首页 > 解决方案 > 通过查询更新不起作用,弹性搜索python

问题描述

我有大约 2000 多个文件名为“Contact.txt”的文档,我正在尝试text: {class: 'contact'}通过执行以下操作来修改一个为所有这些文件调用的字段:

    q = {
        "script": {
            "inline": "ctx._source.text.class='contact'",
            "lang": "painless"
        },
        "query": {
            "match": {
                "name": "Contact.txt"
            },

        }
    }

    try:
        es.update_by_query(body=q, index='index_name')
    except Exception as e:
        print(e)

我的 try/catch 给了我错误:

TransportError(500, 'script_exception', 'runtime error')

标签: pythonelasticsearch

解决方案


text字段在文档中不存在,因此更新脚本应如下所示:

{
  "script": {
    "source": "ctx._source['text'] = params.text",
    "params": {
      "text": {
        "class": "contact"
      }
    },
    "lang": "painless"
  },
  "query": {
    "match": {
      "name": "Contact.txt"
    }
  }
}

推荐阅读