Я хочу использовать поиск эластичных объектов для поиска по большой базе данных адресов, а чтобы сделать его похожим на некоторые другие приложения, я начинаю сначала с почтового индекса, который отлично подходит для остальной части поисковый запрос.Эластичный поиск: используйте фильтр и должен bool query
Так с Search::Elasticsearch
я
my $scroll = $e->scroll_helper(index => 'pdb', search_type => 'scan', size => 100,
body => {
query => {
bool => {
filter => [
{match => { pcode => $postcode }},
],
should => [
{match => { address => $keyword }},
{match => { name => $keyword }},
],
}
}
}
);
Однако это просто выплевывает все для $postcode
и независимо от того, что $keyword
Результирующий набор дополнительно не уменьшается.
Мне необходимо иметь $postcode
как обязательное условие, но также и отдельно, а также другие два поля, которые также должны учитываться как полнотекстовый поиск. Как я должен это сделать (Im глядя на документы и могут быть интерпретации json-> Perl hashrefs неправильно поэтому любые предложения приветствуются)
Для гипотетического примера: Пользователь вводит NW1 4AQ
, приведенный выше запрос будет немедленно вернуться, скажем, Олбани-стрит и Портленд-стрит, если пользователь запрашивает Portland
и этот почтовый индекс, вместо того, чтобы получать оба этих результата, я ожидаю, что результатом станет только портланд-стрит. Прямо сейчас с вышесказанным он просто продолжает возвращать обе записи.
можно ли создать [минимальный, полный и проверяемый пример] (HTTP:... // StackOverflow .com/help/mcve)? –
Добавлен многословный гипотетический пример. – Recct