使用Python API有条件地更新ElasticSearch documen

2024-05-14 23:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试更新一个文档(通过在列表中添加元素),或者创建一个不存在的文档。例如,我希望带有id == Donald_Duck的文档添加列表suggestions的元素(如果还不存在的话)。在

name = 'Donald_Duck'
suggestions = ['Donald', 'Donald duck', 'Duck', 'Duck Avanger']
body = {
           "script" : "ctx._source.text += new_suggetions",
           "params" : { "new_suggestions" : suggestions},
            "upsert" : suggestions
        }


es.update(index=INDEX_NAME, doc_type='test', id=name, body=body)

不幸的是我得到了一个RequestError

^{pr2}$

我的映射如下所示:

mappings = {
  "mappings": {
    "test": { 
      "properties": { 
        "text":    { 
                    "type": "completion", 
                    "analyzer" : "simple",
                    "search_analyzer" : "simple" 
        }, 
      }
    }
  }
}

我怎么能解决这个问题? 如果我有多个文档,是否可以将同一代码用于bulkAPI?在


Tags: textname文档testid元素列表new
1条回答
网友
1楼 · 发布于 2024-05-14 23:25:03

你身体有点不对劲:

body = {
    "script": "ctx._source.text += new_suggestions",
    "params": { "new_suggestions" : suggestions},
    "upsert": {
        "text": suggestions
    }
}

另外,您确定已启用更新脚本。请阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html

相关问题 更多 >

    热门问题