使用NEST在elasticSearch上创建映射时忽略字段

时间:2014-04-22 02:52:55

标签: elasticsearch nest

我正在创建索引并使用indexDescriptor添加映射,我对映射过程有一些疑问:

  1. 如何避免从类中索引特定字段?
  2. 如何提升和指定" boostfield"的价值?使用流畅的界面配置?
  3. 是IndexDescriptor在不使用ElasticProperty属性
  4. 的情况下映射类字段的正确位置

    我只是问这些问题,因为我使用新的NEST,看起来当前的文档已经过时了

    我如何创建索引:

    CreateIndex(IndexName, descriptor => descriptor.AddMapping<CandidateTextInfo>(
    m => m.MapFromAttributes().
    BoostField(c=>c.SetName(d=>d.Headline)).NumericDetection()));
    
    
    public class CandidateTextInfo
        {
            public string ProfilePicture { get; set; }
            public ObjectId UserId { get; set; } //field to ignore on mapping
            public string Name { get; set; }
            public string Headline { get; set; }
            public Gender Gender { get; set; }
            public byte Rating { get; set; }
            public bool IsCompany { get; set; }
            public string[] Tags { get; set; }
            public string[] Categories { get; set; }
            public string ExecutiveSummary { get; set; }
            public HourlyRate HourlyRate { get; set; }
    
    
        }
    

1 个答案:

答案 0 :(得分:2)

首先,文档nest.azurewebsites.com是最新的,适用于NEST 1.0.0-Beta1和Elasticsearch.Net的最新版本。请确保您使用的是最新版本,并参考有关它的博客文章:introducing elasticsearch.net and nest 1.0.0-beta1了解更多详情。

您可以使用Fluent Mapping中的.Enabled()设置排除POCO中的属性被编入索引。或者,您可以使用ElasticProperty属性中的OptOut设置。 (但是,我注意到你远离ElasticProperty属性)。

请查看Nest源代码中的FluentMappingFullExampleTests.cs,以获取所有Fluent Mapping设置/选项的参考。这包括提升和boostField。

是的,IndexDescriptor是映射类字段的一个选项。请参阅Create Index Reference,特别是关于创建带有设置和映射的索引的部分,一目了然。或者,您可以使用Put Mapping Api将映射应用于索引。这两种方法都是有效的,我个人更喜欢在索引创建时应用映射。

希望这有帮助。