我需要更新 Elasticsearch 中文档的字段,并将该文档的计数添加到 python 代码内的列表中。该weight
字段包含数据集中文档的计数。数据集需要不时更新。因此每个文档的计数也必须更新。hashed_ids
是新一批数据中的文档 ID 列表。匹配的weight
id 必须增加 中该 id 的计数hashed_ids
。我尝试了下面的代码,但它不起作用。
hashed_ids = [hashlib.md5(doc.encode('utf-8')).hexdigest() for doc in shingles]
update_with_query_body = {
"script": {
"source": "ctx._source.content_completion.weight +=param.count",
"lang": "painless",
"param": {
"count": hashed_ids.count("ctx.['_id']")
}
},
"query": {
"ids": {
"values": hashed_ids
}
}
}
例如,假设索引中已经存在带有id
=d1b145716ce1b04ea53d1ede9875e05a
和=5 的文档。weight
并且字符串d1b145716ce1b04ea53d1ede9875e05a
在中重复了三遍,hashed_ids
因此update_with_query
上面显示的查询将匹配数据库中的文档。我需要将 3 添加到 5 并有 8 作为最终weight