无效的NEST响应是由POST

时间:2019-01-11 12:35:03

标签: c# elasticsearch nest

我想从C#代码配置NEST 当我使用Kibana命令GET /_cat/indices?v

我得到这个结果:

enter image description here

我的测试索引是“客户”

我正在使用Elasticsearch.Net和NEST:.NET客户端[6.x] 弹性“ 6.5.4”, 现在,这就是我在C#上进行配置的方式:

  var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
.DefaultIndex("customer");

        var client = new ElasticClient(settings);



        var newCustomer = new Customer
        {
            name = "test_name",
            OS = "test_os",
            script = "test_script"
        };


        var indexResponse = client.IndexDocument(newCustomer);

我得到一个错误:

Invalid NEST response built from a unsuccessful low level call on POST: /customer/customer

为什么要建立对/ customer / customer的请求? 我的配置有误吗?

错误消息:

无效的NEST响应是由POST上的不成功的低级调用生成的:/ customer / customer 此API调用的审核跟踪:  -BadResponse:节点:http://localhost:9200/进行了:00:00:00.2817669 OriginalException:Elasticsearch.Net.ElasticsearchClientException:Удаленныйсервервозвратилошибку:(400)Недопустимыйзапрос.。呼叫:状态代码400来自:POST /客户/客户。 ServerError:类型:invalid_argument_exception原因:“由于最终的映射将拒绝对[customer]的映射更新,而将具有多个类型:[_doc,customer]” ---> System.Net.WebException:Удаленныйсервервозвратилошибку:(400) Недопустимыйзапрос。

2 个答案:

答案 0 :(得分:1)

您在ES中已经有一个映射,并且您要索引的文档与此不匹配。

答案 1 :(得分:0)

  

为什么要建立对/ customer / customer的请求?我的配置有误吗?

将其构建为statuses(索引)和customer(类型),因为

  1. 索引请求未指定文档应建立索引的索引,因此该请求使用configured default index from ConnectionSettings
  2. 索引请求未指定文档的类型,因此POCO类型名称中的NEST infers the type name通过小写来表示。

如果要为所有POCO设置默认类型名称,则可以使用

customer