如何在ElasticSearch NEST 6中插入或更新文档
我想将每个用户的网页浏览事件存储到弹性索引中。如果存在特定用户的ViewEvent,则插入,否则,再加上1个现有ViewEvent的计数。
弹性文档类型为Post
public class ViewEvent
{
public int UserId {get; set;}
public int Count {get; set;}
}
我可以通过遵循REST请求来做到这一点:
http://192.168.20.80:9200/db/ViewEvent/2/_update
{
"script": {
"lang": "painless",
"source": "ctx._source.count += 1;"
},
"upsert" : {
"userId": 2,
"count": 1
}
}
问题是当我尝试通过NEST客户端执行此操作时。通过完成以下代码来更新部分。
var response1 = await _vastContext.Client(indexName)
.UpdateByQueryAsync<VastEvent>(u => u.Query(query =>
query.Terms(term => term.Field(f => f.UserId).Terms(2)))
.Script(script => script.Source($"ctx._source.count += 1;")
.Lang(ScriptLang.Painless)));
我无法在请求中添加upsert部分!