我正在创建索引并使用indexDescriptor添加映射,我对映射过程有一些疑问:
我只是问这些问题,因为我使用新的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; }
}
答案 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将映射应用于索引。这两种方法都是有效的,我个人更喜欢在索引创建时应用映射。
希望这有帮助。