Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ElasticSearch嵌套获取响应未反序列化_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Get_Deserialization_Nest - Fatal编程技术网 elasticsearch,get,deserialization,nest,C#,elasticsearch,Get,Deserialization,Nest" /> elasticsearch,get,deserialization,nest,C#,elasticsearch,Get,Deserialization,Nest" />

C# ElasticSearch嵌套获取响应未反序列化

C# ElasticSearch嵌套获取响应未反序列化,c#,elasticsearch,get,deserialization,nest,C#,elasticsearch,Get,Deserialization,Nest,我们从第三方连接到ElasticSearch,用NEST nuget包获取一些数据。但是,如果使用GET调用,则响应不会在强类型POCO中反序列化。HTTP调用成功,主体中有一个包含数据的json对象 var result = _elasticSearchClient.Get<Contractor>(188153, request => request .Index("{index_name}") .Type("{type_name}")); --POCO. Naming o

我们从第三方连接到ElasticSearch,用NEST nuget包获取一些数据。但是,如果使用GET调用,则响应不会在强类型POCO中反序列化。HTTP调用成功,主体中有一个包含数据的json对象

var result = _elasticSearchClient.Get<Contractor>(188153, request => request
.Index("{index_name}")
.Type("{type_name}"));

--POCO. Naming of the property as in the json message
public class Contractor
{
public int contractor_id { get; set; }
public string type { get; set; }
public string type_description { get; set; }
public string contractor_code { get; set; }
public string name { get; set; }
...
}
调试信息: 从GET成功的低级调用生成的有效嵌套响应:/{index_name}/{type_name}/188153?pretty=true

此API调用的审核跟踪: -[1]HealthyResponse:Node:https://{baseUrl}/take:00:00:01.0835021 请求:请求流未被捕获或已被序列化程序读取完成。在ConnectionSettings上设置DisableDirectStreaming(),以强制在响应上设置它

答复:

{
  "_index" : "{index_name}",
  "_type" : "{type_name}",
  "_id" : "188153",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "contractor" : {
      "contractor_id" : 188153,
      "type" : "OVE",
      "type_description" : "Overig",
      "contractor_code" : "RES0000826",
      "name" : "OrganizationName", 
   }
}
NEST NuGet包5.6.0

Elasticsearch版本6.0.0


我遗漏了什么?

它没有被NEST反序列化,因为Elasticsearch中的
\u源文件
是一个具有一个属性的对象,
“contractor”
,其值是一个包含属性的对象

为了正确地反序列化,需要删除Elasticsearch中的
\u源文件

  "_source" : {
      "contractor_id" : 188153,
      "type" : "OVE",
      "type_description" : "Overig",
      "contractor_code" : "RES0000826",
      "name" : "OrganizationName"
   }
或者,POCO应该是

public class ContractorWrapper //choose any type name you like :)
{
    public Contractor contractor { get;set; }
}

匹配JSON结构。

由于Elasticsearch中的
\u源文件
是一个具有一个属性的对象,
“contractor”
,其值是一个包含属性的对象,因此NEST不会对其进行反序列化

为了正确地反序列化,需要删除Elasticsearch中的
\u源文件

  "_source" : {
      "contractor_id" : 188153,
      "type" : "OVE",
      "type_description" : "Overig",
      "contractor_code" : "RES0000826",
      "name" : "OrganizationName"
   }
或者,POCO应该是

public class ContractorWrapper //choose any type name you like :)
{
    public Contractor contractor { get;set; }
}

匹配JSON结构。

您使用的是什么版本的NEST?您正在运行的Elasticsearch版本是什么?关于
结果
.DebugInformation
说了什么?我用附加信息编辑了这个问题。你使用的是什么版本的NEST?您正在运行的Elasticsearch版本是什么?
.DebugInformation
关于
结果的内容是什么?我用附加信息编辑了这个问题。这是将对象放在源代码中的最佳做法还是应该是承包商对象在源代码中的根?@Devliegendebeer
\u Source
包含JSON文档,因为它在索引时被发送到Elasticsearch。我认为在您的例子中,
\u源代码
JSON应该是我在第一个代码示例中所展示的。如果可以的话,我倾向于将索引代码更改为这样的序列化。这是将对象放入源代码中的最佳做法还是应该是承包商对象在_Source中的根?@Devliegendebeer
\u Source
包含JSON文档,因为它在索引时被发送到Elasticsearch。我认为在您的例子中,
\u源代码
JSON应该是我在第一个代码示例中所展示的。如果可以,我倾向于将索引代码更改为如下序列化。