考虑这个脚本:
hashed_ids = [hashlib.md5(doc.encode('utf-8')).hexdigest() for doc in shingles]
update_by_query_body =
{
"query":{
"terms": {
"id":["id1","id2"]
}
},
"script":{
"source":"long weightToAdd = params.hashed_ids.stream().filter(idFromList -> ctx._source.id.equals(idFromList)).count(); ctx._source.weight += weightToAdd;",
"params":{
"hashed_ids":["id1","id1","id1","id2"]
}
}
}
这个脚本执行它应该执行的操作,但是它非常慢,并且有时会引发超时错误
我需要在Elasticsearch中更新一个文档字段,并在python代码中的列表中添加该文档的计数。权重字段包含数据集中文档的计数。数据集需要不时更新。因此,每个文档的计数也必须更新hashed_ids
是新批数据中的文档ID列表。匹配id的权重必须增加hashed_ids
中该id的计数。
例如,假设索引中已经存在带有id=d1b145716ce1b04ea53d1ede9875e05a
和weight=5
的文档。而且字符串d1b145716ce1b04ea53d1ede9875e05a
在hashed_ids
中重复三次,因此update_with_query
查询将匹配数据库中的文档。我需要将3添加到5,并将8作为最终weight
我需要一些想法来提高代码的效率
目前没有回答
相关问题 更多 >
编程相关推荐