我需要更新 Elasticsearch 中文档的字段,并将该文档的计数添加到 python 代码内的列表中。该weight字段包含数据集中文档的计数。数据集需要不时更新。因此每个文档的计数也必须更新。hashed_ids是新一批数据中的文档 ID 列表。匹配的weightid 必须增加 中该 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