Dictionary 使用嵌套对象时遇到问题
当我尝试为我定义类型的文档编制索引时,有一个应该映射为嵌套对象类型的列表:嵌套,它被映射为常规对象类型 看看代码: 我有一个像这样的简单类:Dictionary 使用嵌套对象时遇到问题,dictionary,elasticsearch,nest,Dictionary,elasticsearch,Nest,当我尝试为我定义类型的文档编制索引时,有一个应该映射为嵌套对象类型的列表:嵌套,它被映射为常规对象类型 看看代码: 我有一个像这样的简单类: [ElasticType()] public class MyJob { [ValueFieldAttribute] public int jobCode { get; set; } [ValueFieldAttribute(Type = FieldType.nested)] public IList<JobProf
[ElasticType()]
public class MyJob
{
[ValueFieldAttribute]
public int jobCode { get; set; }
[ValueFieldAttribute(Type = FieldType.nested)]
public IList<JobProfessionalFieldInfo> JobProfessionalFields { get; set; }
}
ValueFieldAttribute类的代码为:
[ElasticType()]
public class JobProfessionalFieldInfo
{
[ValueFieldAttribute]
public int JobId { get; set; }
[ValueFieldAttribute]
public int CategoryId { get; set; }
}
public class ValueFieldAttribute : ElasticPropertyAttribute
{
public ValueFieldAttribute()
: base()
{
this.Store = false;
this.Index = FieldIndexOption.not_analyzed;
}
}
我的节目:
static void Main(string[] args)
{
ConnectionSettings node = new ConnectionSettings(new Uri("http://localhost:9200"));
node.SetDefaultIndex("jobs");
ElasticClient client = new ElasticClient(node);
List<JobProfessionalFieldInfo> list = new List<JobProfessionalFieldInfo>();
list.Add(new JobProfessionalFieldInfo { CategoryId = 1, JobId = 1 });
list.Add(new JobProfessionalFieldInfo { CategoryId = 2, JobId = 2 });
var res = client.Index<MyJob>(new MyJob
{
jobCode = 1,
JobProfessionalFields = list
},"jobs", "MyJob",1);
}
这不是结局:
我想看看,
回答的人告诉我们,当我们使用注释时,我们需要手动调用createIndex和Map方法,但问题是我没有任何通用的Map方法。。。!
看一看:只是为了让你进入链接-这是它的开始
namespace Nest
{
public partial class ElasticClient...
我不知道如何使用非泛型映射方法来放置MyJob类的映射
我如何使这些东西将JobProfessional字段映射为嵌套类型的dudes
谢谢你们的帮助 好的,明白了,哈哈
MapFromAttributes是将映射至少放在我使用的当前嵌套版本-0.12.0中的正确通用方法。
但是它需要手动调用索引创建,也就是说,它给出了一个IndexMissing异常,就像上面提到的链接中的家伙所说的那样
client.CreateIndex("jobs", new IndexSettings { });
var res = client.MapFromAttributes<MyJob>("jobs","MyJob");
但这真的很有趣,为什么仅仅定义
[ElasticPropertyType=FieldType.nested]
为了获得嵌套映射,尽管
我很乐意得到这个问题的答案
client.CreateIndex("jobs", new IndexSettings { });
var res = client.MapFromAttributes<MyJob>("jobs","MyJob");