ситуация такая.У меня в эластичной группе.каждая из этих групп имеет вложенный список элементов.И группа, и элементы имеют атрибут с именем serial, который является уникальным.Я получаю серийный номер для группы и серийный номер для предмета, и с этими 2 предметами я должен вернуть предмет.
В настоящее время я делаю это следующим образом:
public item findItem(string groupSerial, string itemSerial)
{
var searchResponse = _elasticClient.Search<Group>(s => s
.Index(_config.groupIndexName)
.Query(q => q
.ConstantScore(cs => cs
.Filter(f => f
.Term(t => t
.Field(fi => fi.serial)
.Value(groupSerial)
)
)
)
).Query(q => q
.Nested(c => c
.InnerHits(i => i.Explain())
.Path(p => p.items)
.Query(nq => nq.Term(t => t
.Field(field => field.items.First().serial)
.Value(itemSerial)))))
);
var result = searchResponse.Documents.FirstOrDefault();
return result?.items.Find(item => item.serial == itemSerial);
}
У меня такое ощущение, что должен быть более эффективный способ.Как получить товар прямо из поиска в упругой.Кто-нибудь знает как?