首页 > 解决方案 > 在映射中设置自定义类型名称

问题描述

我需要创建一个具有自定义名称的文档映射。目前,我的文档在 CreateIndexDescriptor 对象上有以下映射:

.Mappings(m => m
  .Map<MyDocType>(mDetails => mDetails.AutoMap()));

它创建了一个名为 mydoctype 的文档映射。如何修改它以创建类型名称为 my_doctype 的文档?

标签: elasticsearchmappingnest

解决方案


在 NEST 7.x 中,这是不可能的 - 文档类型将符合删除映射类型_doc路线图

在 NEST 6.x 中,您可以通过几种不同的方式指定要使用的类型名称

  1. ElasticsearchTypeAttribute在 POCO 上使用

    [ElasticsearchType(Name = "my_doctype")]
    public class MyDocType{ }
    
  2. DataContractAttribute在 POCO 上使用

    [DataContract(Name = "my_doctype")]
    public class MyDocType{ }
    
  3. 使用.DefaultMappingFor<T>()_ConnectionSettings

    var settings = new ConnectionSettings()
        .DefaultMappingFor<MyDocType>(m => m
            .IndexName("my_doc_type_default_index")
            .TypeName("my_doctype")
        );
    
    var client = new ElasticClient(settings);
    

推荐阅读