建议字段数组

时间:2015-09-24 07:32:46

标签: elasticsearch nest elasticsearch-net

我有一个包含标签数组的文档。我需要创建一个与此标记字段对应的建议字段(以根据标记数组中的值生成标记建议)。我使用NEST主要与弹性搜索进行交互。但我无法更新建议属性。用于该文档的类包含以下内容 文件结构:

public class SuggestField
{
    public IEnumerable<string> Input { get; set; }
    public string Output { get; set; }
    public object Payload { get; set; }
    public int? Weight { get; set; }
}


public class Source{

        [ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
        public string[] tags { get; set; }

        public SuggestField[] tag_suggest { get; set; }
}

我按如下方式添加映射:

var response = client.Map<Source>(m => m
                                     .MapFromAttributes()
                                     .Properties(p => p
                                     .Completion(c => c
                                     .Name(cp => cp.tag_suggest)
                                         .Payloads()
                                     )));

为了更新标签,我使用外部脚本。我希望更改同一个脚本以添加对tag_suggest字段的更改。但我试过以下但是没有用。以下是我尝试的脚本:

if (ctx._source.tags.indexOf(newTag) < 0) {
      ctx._source.tags[ctx._source.tags.length] = newTag;
      ctx._source.tag_suggest[ctx._source.tag_suggest.length] = { input :newTag }
}

1 个答案:

答案 0 :(得分:1)

我会将5属性的类型从tag_suggest更改为SuggestField[]。您可以将所有代码存储在SuggestField

SuggestField.Input

关于更新脚本,在此更改后,您可以将其修改为:

public class Source
{

    [ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
    public string[] tags { get; set; }

    public SuggestField tag_suggest { get; set; }
}

希望它有所帮助。