У меня есть документ, содержащий массив тегов. Мне нужно создать поле предложения, соответствующее этому полю тега (чтобы генерировать предложения тегов на основе значений в массиве тегов). Я использую 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 }
}