![](/img/trans.png)
[英]Dispatching Index() from NEST into to Elasticsearch.NET failed
[英]Dispatching Update() from NEST into to Elasticsearch.NET failed
我已升级到NEST 5.5.0:
我相信我缺少参数ID,但是如何在代码中编写它:
var response = client.Update<myOrder>(order, x => x.Parent(order.Id));
遇到错误:{“将Update()从NEST分发到Elasticsearch.NET失败\\ r \\ n接收到标记为POST \\ r \\ n的请求此端点接受POST \\ r \\ n该请求可能没有提供足够的信息来构成任何这些端点:\\ r \\ n-/ {index = orders} / {type = order} / {id =} / _ update \\ r \\ n“}
还有另一种方式可以编写此代码吗?
是的,很可能您的对象中缺少弹性文档ID。
尝试首先从索引中检索对象,如果还没有,请从中获取Elastic Doc 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));
要么
您可以在对象中有一个ElasticDocID字段,并使用该对象进行更新,因为它将在更新时使用来自该对象的ID。
var response = client.Update<myOrder>(myOrder, x => x.Parent(order.Id));
实际上,对于Nest 6+,它是:
var response = await client.UpdateAsync<myOrder, dynamic>(new DocumentPath<myOrder>(order.Id),
u => u.Index(indexName).Doc(order));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.