Я хотел бы отделить свой SearchDescriptor от своего запроса MultiSearch, чтобы упростить повторное использование.
Вот что у меня сейчас (до разлуки). Он работает идеально:
IMultiSearchResponse result = esClient
.MultiSearch(search => search
.Search<ElasticSearchCorporation>(a => a
.Size(100)
.Query(q => q
.MultiMatch(query => query
.Type(TextQueryType.CrossFields)
.OnFieldsWithBoost(b => b
.Add(f => f.Summary, 1.6)
.Add(f => f.Summary.Suffix("ngram"), 1.5)
.Add(f => f.Description, 1.0))
.Query(searchQuery)))));
Это то, что я пытаюсь сделать, но я, видимо, сделал что-то не так.
SearchDescriptor<ElasticSearchCompany> companySearchDescriptor = new SearchDescriptor<ElasticSearchCompany>();
companySearchDescriptor
.Size(100)
.Query(q => q
.SimpleQueryString(query => query
.OnFieldsWithBoost(b => b
.Add(f => f.Summary, 1.6)
.Add(f => f.Summary.Suffix("ngram"), 1.5)
.Add(f => f.Description, 1.0)
.Add(f => f.City.Suffix("ngram"), 1.1)
.Add(f => f.City, 1.0))
.Query(searchQuery)));
IMultiSearchResponse result = esClient
.MultiSearch(search => search
.Search(companySearchDescriptor));
Я получаю эту ошибку: «Аргументы типа для метода« Nest.MultiSearchDescriptor.Search (System.Func, Nest.SearchDescriptor>) »не могут быть выведены из использования. Попробуйте явно указать аргументы типа».
Однако я явно указал аргумент типа. Вот для чего нужен SearchDescriptor<ElasticSearchCompany>
.
Редактировать 2: Возможно, мое непонимание связано с нюансами беглого API.