嘿我尝试更新document
的现有ElasticSearch
,我在Elasticsearch网站上找到了cURL
代码
注意:带有Sam
文档的2
类型已存在我只想更新现有字段
POST /EmployeeIndex/Sam/2/_update
{
"doc" : {
"Nested" : true,
"views": 0
}
}
它完美地完成了我的需求,但请帮助我将其转换为NEST
,当我处理.NET
时,我设法写了code
var responseUpdate = client.Update<clsEmployeeElasticSearch, object>(u => u
.Index("EmployeeIndex")
.Type("Sam")
.Id(2)
.Doc(new { Nested= true })
.RetryOnConflict(3)
.Refresh());
答案 0 :(得分:3)
您需要的是PartialUpdate
。应用于您的示例,以下代码应该按预期执行。
var responseUpdate = client.Update<clsEmployeeElasticSearch, object>(u => u
.Index("EmployeeIndex")
.Type("Sam")
.Id(2)
.Doc(new {IsActive ="true", Views="0"})
.DocAsUpsert()
);
答案 1 :(得分:3)
您是否可能已经在那里,但只是面临套管失配问题?从Nest reference看:
属性名称推断在许多地方,NEST允许您通过 属性名称和JSON路径为C#表达式,即:
.Query(Q =&GT; Q .Term(p =&gt; p.Followers.First()。FirstName,&#34; martijn&#34;))NEST默认为camelCase属性。所以上面的FirstName属性 将被翻译为&#34; followers.firstName&#34;。
可以通过设置
进行配置settings.SetDefaultPropertyNameInferrer(p值=指p);这将离开 财产名称未触及。
标有[ElasticAttibute(Name =&#34;&#34;)]或的标签 [JsonProperty(Name =&#34;&#34;)]将逐字传递配置的名称。
... 请注意,您正在为更新创建动态对象,因此,如果您保持这种状态,我相信属性可能不是解决方案