Как я могу построить запрос NEST с дополнительными параметрами? - PullRequest
0 голосов
/ 18 октября 2018

Я использую клиент NEST .NET (6.3.1) и пытаюсь составить поисковый запрос, основанный на ряде (необязательных) параметров.

Вот что у меня получилосьfar:

var searchResponse = await _client.SearchAsync<Listing>(s => s
                .Query(qq =>
                {
                    var filters = new List<QueryContainer>();

                    if (filter.CategoryType.HasValue)
                    {
                        filters.Add(qq.Term(p => p.CategoryType, filter.CategoryType.Value));
                    }

                    if (filter.StatusType.HasValue)
                    {
                        filters.Add(qq.Term(p => p.StatusType, filter.StatusType.Value));
                    }

                    if (!string.IsNullOrWhiteSpace(filter.Suburb))
                    {
                        filters.Add(qq.Term(p => p.Suburb, filter.Suburb));
                    }

                    return ?????; // what do i do her?
                })
            );

filter - объект со множеством обнуляемых свойств.Итак, все, что имеет значение, которое я хочу добавить в качестве запроса на совпадение.

Итак, чтобы добиться этого, я пытаюсь составить список QueryContainer (не уверен, что это правильный путь),но изо всех сил пытаюсь выяснить, как вернуть это как список предикатов AND.

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 19 октября 2018

Закончилось, сделав это с помощью метода object initialisez вместо Fluent DSL "

var searchRequest = new SearchRequest<Listing>
{
   Query = queries
}

queries - это List<QueryContainer>, который я только что построил, вот так:

queries.Add(new MatchQuery
{
   Field = "CategoryType",
   Query = filter.CategoryType
}

Мне кажется, что есть лучший способ, и мне не нравится, как я должен жестко закодировать 'Поле' в строку ... но это работает. Надеюсь, кто-то покажет мне лучший способ!

...