我在NEST的映射中遇到了一些问题 让我来描述我的设置。
我将 ElasticClient 设置为我的ioc容器中的单身人员,如下所示:
ElasticClient client = new ElasticClient(settings);
client.CreateIndex("elasticsearch", c =>
c
.AddMapping<ProductDocument>(m => m.MapFromAttributes())
.AddMapping<PageDocument>(m => m.MapFromAttributes())
.AddMapping<MediaAsset>(ma => ma.MapFromAttributes()));
ProductDocument , PageDocument 和 MediaAsset 都从 ContentDocument 继承属性。在这个问题中,我将专注于让 ProductDocument 工作。 (我已经遗漏了一些不遗余力的领域)
public class ContentDocument
{
public string Id { get; set; }
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string DocumentKey { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string Language { get; set; }
public string Url { get; set; }
}
public class ProductDocument : ContentDocument
{
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string GroupId { get; set; }
}
要为文档编制索引,我只需将值放在属性中并使用
_elasticClient.Index(product);
但是当我在ElasticSearch中检查映射时,我看到的是:
{
"elasticsearch" : {
"mappings" : {
"productdocument" : {
"properties" : {
...
"groupId" : {
"type" : "string"
},
"language" : {
"type" : "string"
}
}
}
}
}
我希望language和groupId成为索引:&#34; NotAnalyzed&#34;。 我在这做错了什么?
答案 0 :(得分:0)
尝试类级别注释:
[ElasticType(Name = "ContentDocument")]
public class ContentDocument
{
public string Id { get; set; }
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string DocumentKey { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string Language { get; set; }
public string Url { get; set; }
}
[ElasticType(Name = "ProductDocument")]
public class ProductDocument : ContentDocument
{
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string GroupId { get; set; }
}