Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dictionary 使用嵌套对象时遇到问题_Dictionary_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,Dictionary,elasticsearch,Nest" /> elasticsearch,nest,Dictionary,elasticsearch,Nest" />

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");