如何在ElasticSearch NEST 6中插入或更新文档

时间:2018-09-23 05:57:36

标签: elasticsearch nest

如何在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部分!

0 个答案:

没有答案