Ich versuche, eine Abfrage zu erstellen, wo der Benutzer nach ES-Dokumenten suchen kann, wo das Markenfeld gleich einer Zeichenfolge ist. Hier ist die Abfrage, die ich derzeit habe, die funktioniert, aber keine Filterung hat. Ich benutze elasticsearch-rails mit Ruby on Rails.Add to ElasticSearch Query
@products = Product.search(
query:{
function_score:{
query: {
multi_match: {
fields: ['brand^5', '_all'],
query: "#{query}",
fuzziness: "AUTO"
}
},
field_value_factor:{
field: "popularity",
modifier: "log1p"
}
}
}).page(page).per(25)
Ich habe dem Filter zu Testzwecken einen Markennamen zugewiesen. In diesem Fall sollte der Nutzer Ergebnisse für sein Such-Keyword mit dem Markennamen "NordicTrack" sehen.
query:{
function_score:{
query: {
multi_match: {
fields: ['brand^5', '_all'],
query: "#{query}",
fuzziness: "AUTO"
}
},
filter: {
term: {"brand":"NordicTrack"}
},
field_value_factor:{
field: "popularity",
modifier: "log1p"
}
}
}
).page(page).per(25)
Diese Abfrage gibt mir die folgende Fehlermeldung:
[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"no [query] registered for [filter]","line":1,"col":139}],"type":"parsing_exception","reason":"no [query] registered for [filter]","line":1,"col":139},"status":400}
Ich bin nicht sicher, warum dies nicht funktioniert. Jede Hilfe wäre willkommen!
Sonderbare, sollte es funktionieren. Was ist Ihre elastische Suchversion? Können Sie versuchen mit 'term: {brand: 'NordicTrack'}' als Filter? –