我已升级到NEST 5.5.0:
我相信我错过了参数ID,但我将如何在我的代码中编写它:
var response = client.Update<myOrder>(order, x => x.Parent(order.Id));
遇到错误: {“从NEST调度更新()到Elasticsearch.NET失败\ r \ n \ n接收标记为POST的请求\ r \ n此端点接受POST \ r \ n请求可能没有提供足够的信息来生成任何这些端点:\ r \ n \ n - / {index = orders} / {type = order} / {id =} / _ update \ r \ n“}
还有其他方法可以编写此代码吗?
答案 0 :(得分:0)
是的,很可能您在对象中缺少弹性文档ID。
尝试首先从索引中检索对象,如果您还没有,则从中获取弹性文档ID。
var response = client.Search<myOrder>(p => p
.Size(1)
.Query(q => q
.Match(m => m
.Field(f => f.OrderID)
.Query("your order id")
)));
var ElasticOrderID = response.Hits.FirstOrDefault()?.Id ?? string.Empty;
然后用ID进行更新..
var response = client.Update<myOrder>(ElasticOrderID , x => x.Parent(order.Id));
OR
您可以在对象中有一个ElasticDocID字段,并使用该对象进行更新,因为它将在更新时使用对象中的ID。
var response = client.Update<myOrder>(myOrder, x => x.Parent(order.Id));
答案 1 :(得分:0)
实际上,对于Nest 6+,它是:
var response = await client.UpdateAsync<myOrder, dynamic>(new DocumentPath<myOrder>(order.Id),
u => u.Index(indexName).Doc(order));