эластичный поиск NEST получить вложенный документ - PullRequest
0 голосов
/ 24 мая 2018

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

У меня такое ощущение, что должен быть более эффективный способ.Как получить товар прямо из поиска в упругой.Кто-нибудь знает как?

...