У меня есть вложенные документы, например;
public sealed class CampaignIndexModel : ElasticEntity<Guid>
{
public Guid StoreId { get; set; }
public string Slug { get; set; }
public string SlugKey { get; set; }
public string Title { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public string Condition { get; set; }
public string PreviewImageUrl { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public bool IsPublished { get; set; }
public DateTime CreatedOnUtc { get; set; }
[Nested]
public List<BadgeIndexModel> Badges { get; set; }
}
public class BadgeIndexModel
{
public string Code { get; set; }
public string Name { get; set; }
}
Я хотел бы запросить во вложенном объекте несколько значений. Например, мне нужно запросить, какие свойства кода включены: «AD», «NEW». Все документы должны иметь бейдж, а свойства их кода должны быть «AD» и «NEW». Свойства кода могут быть динамическими. На самом деле я хотел бы найти список строк в свойстве кода вложенного объекта.
Обратите внимание, что классы автоматически сопоставляются при создании индексов.
Надеюсь, вопрос ясен, понятен.
Спасибо.
ОБНОВЛЕНИЕ
Насколько я изучал документацию Elasticsearch, как показано ниже, результат запроса возвращает точно указанные коды значков.
q.Bool(b=>b
.Must(x=>x.
Nested(n=>n
.Path(p=>p.Badges)
.Query(qq=>qq
.Term(t=>t
.Field(f=>f.Badges.First().Code.Suffix("keyword"))
.Value(badge))))))
Затем ответ, помеченный как правильный, возвращает документы, содержащие коды значков