elasticsearch Präfix der Abfrage für mehrere Worte zu lösen die AutoVervollständigen verwenden Fall
Wie bekomme ich von elastic search zu arbeiten, zu lösen ein einfaches AutoVervollständigen verwenden, bei denen mehrere Wörter?
Können sagen, ich habe ein Dokument mit folgendem Titel - Elastic search ist eine große such-tool das auf Basis von lucene.
Also, wenn ich den Präfix der Abfrage und erstellen Sie mit dem Formular -
{
"prefix" : { "title" : "Elas" }
}
Wird es zurückkehren, das Dokument in die Ergebnismenge.
Jedoch wenn ich eine Präfix-Suche für
{
"prefix" : { "title" : "Elastic sea" }
}
Bekomme ich keine Ergebnisse.
Welche Art von Abfrage muss ich bauen damit der Benutzer das Ergebnis für ein einfaches AutoVervollständigen-use-case.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Präfix-Abfrage gemacht auf
Elastic sea
würde mit einem Begriff wieElastic search
im index, aber das scheint nicht in Ihrem index, wenn Sie die tokenisierung auf Leerzeichen. Was Sie haben, istelastic
undsearch
als zwei verschiedene Token. Haben Sie einen Blick auf die analysieren api, um herauszufinden, wie Sie tatsächlich sind, die die Indizierung Ihrer text.Durch eine Boolesche Abfrage, wie in Ihrer Antwort, die Sie würde nicht berücksichtigen, die position der Begriffe. Sie bekommen als Ergebnis das folgende Dokument zum Beispiel:
Für auto-complete-Zwecke möchten Sie vielleicht, um eine phrase, die Abfrage, und verwenden Sie den letzten Begriff als Präfix. Das ist eine out of the box mit dem match_phrase_prefix geben Sie einen match query, die genau für Ihren Anwendungsfall:
Mit dieser Abfrage ein Beispieldokument passen würden, aber mir wäre nicht da
elastic
ist nicht in der Nähesearch
es.Erreichen das Ergebnis Sie brauchen, um eine Boolean-Abfrage. Das Teilwort muss ein Präfix-Abfrage und das komplette Wort oder Satz muss in einer match-Klausel. Es gibt andere tweaks zur Verfügung, um die Abfrage wie muss, soll etc.., die angewendet werden können, wie gebraucht.