【发布时间】:2021-05-08 02:39:47
【问题描述】:
我需要在 Elastic 中每隔几分钟更新数千个项目,不幸的是重新索引对我来说不是一个选项。根据我的研究,更新项目的最佳方法是使用 _update_by_query - 我已经成功地更新了单个文档 -
{
"query": {
"match": {
"itemId": {
"query": "1"
}
}
},
"script": {
"source": "ctx._source.field = params.updateValue",
"lang": "painless",
"params": {
"updateValue": "test",
}
}
}
var response = await Client.UpdateByQueryAsync<dynamic>(q => q
.Index("masterproducts")
.Query(q => x.MatchQuery)
.Script(s => s.Source(x.Script).Lang("painless").Params(x.Params))
.Conflicts(Elasticsearch.Net.Conflicts.Proceed)
);
虽然这可行,但效率极低,因为它会生成数千个请求 - 有没有一种方法可以在单个请求中更新具有匹配 ID 的多个文档?我已经尝试过Multiple search API,它似乎不能用于此目的。任何帮助将不胜感激!
【问题讨论】:
标签: c# json elasticsearch nest