Я пытаюсь MultiMatch
выполнить поиск с условием. Я знаю, что подобные вопросы задавались раньше, но не с использованием NEST
. Это мой текущий поиск, он хорошо работает по всему документу
var response = await this.client.SearchAsync<EmployeeDocument>(
x => x.Index(this.settings.IndexName).Type("employee").From(page * pageSize)
.Size(pageSize).Query(
q => q.MultiMatch(m => m
.Query(query)
.Type(TextQueryType.MostFields)
.MinimumShouldMatch("90%")
.Fields(f => f
.Field(_ => _.FullName, 3)
.Field(_ => _.Number, 3)
.Field(_ => _.Email)
.Field(_ => _.CompanyName, 2)
.Field(_ => _.JobNumber)
.Field(_ => _.Description))))
.Highlight(
h => h.PreTags("<mark>").PostTags("</mark>")
.Fields(
f => f.Field(p => p.FullName),
f => f.Field(p => p.CompanyName),
f => f.Field(p => p.JobNumber),
f => f.Field(p => p.Number),
f => f.Field(p => p.Email),
f => f.Field(p => p.Description))));
Как я могу добавить условие, чтобы искать только определенное поле? (CompanyId)
Так, например, приведенный выше код выполняет поиск сотрудников, но ему нужно искать только внутри конкретной компании.
Это то, что я пробовал
var response = await this.client.SearchAsync<EmployeeDocument>(
x => x.Index(this.settings.IndexName).Type("employee").From(page * pageSize)
.Size(pageSize).Query(
q => q.MultiMatch(m => m
.Query(query)
.Type(TextQueryType.MostFields)
.MinimumShouldMatch("90%")
.Fields(f => f
.Field(_ => _.FullName, 3)
.Field(_ => _.Number, 3)
.Field(_ => _.Email)
.Field(_ => _.CompanyName, 2)
.Field(_ => _.JobNumber)
.Field(_ => _.Description))))
.Query(_ => _.Bool(b => b.Must(descriptor =>
descriptor.Term(t =>
t.Field(document => document.CompanyGroupId).Value(4213))))) // I ADDED THIS SECTION HERE
.Highlight(
h => h.PreTags("<mark>").PostTags("</mark>")
.Fields(
f => f.Field(p => p.FullName),
f => f.Field(p => p.CompanyName),
f => f.Field(p => p.JobNumber),
f => f.Field(p => p.Number),
f => f.Field(p => p.Email),
f => f.Field(p => p.Description))));
Я добавил дополнительный запрос для выполнения условия bool
, но мне кажется, что я не вернул правильный результат. Но я уверен, что мой NEST
запрос неверен