Я пытаюсь создать запрос, который в основном выполняет поиск по всем полнотекстовым полям, увеличив несколько, но оставляя все остальные значения по умолчанию равными 1.
Когда я не включаю никаких полей,все имеет повышение 1 (мы находимся на версии 6.4.2, которая поддерживает по умолчанию, когда поля не указаны ):
var results = await _ElasticClient.SearchAsync<dynamic>(s => s
.Query(q => q
.MultiMatch(m => m
.Query(request.Query)
)
)
);
Однако, как только я пытаюсь повыситьодиночное поле, оно удаляет значения по умолчанию для всех других полей, только поиск по явному полю:
var results = await _ElasticClient.SearchAsync<dynamic>(s => s
.Query(q => q
.MultiMatch(m => m
.Fields(f => f.Field("firstName^20"))
.Query(request.Query)
)
)
);
Я попытался добавить шаблон, но это все равно совпадает с firstName
(опять же, шаблон)сам по себе ничего не совпадает, поэтому, предположив, что у меня неправильный синтаксис):
var results = await _ElasticClient.SearchAsync<dynamic>(s => s
.Query(q => q
.MultiMatch(m => m
.Fields(f => f.Field("*.*^1"))
.Fields(f => f.Field("firstName^20"))
.Query(request.Query)
)
)
);
Я также попытался Bool
объединить их вместе, но это также просто совпадает с firstName
:
var results = await _ElasticClient.SearchAsync<dynamic>(s => s
.Query(q => q
.Bool(b => b
.Should(m => m
.MultiMatch(mm => mm
.Query(request.Query)
)
)
.Should(m => m
.MultiMatch(mm => mm
.Fields(f => f.Field("firstName^20"))
.Query(request.Query)
)
)
)
)
);
Я начинаю думать, что это невозможно.Для контекста, причина, по которой я пытаюсь это сделать, заключается в том, чтобы иметь возможность добавлять другие полнотекстовые поля в индекс без необходимости включать каждое поле в наши запросы, но при этом иметь возможность добавлять определенные поля.