繁体   English   中英

将Update()从NEST分发到Elasticsearch.NET失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM