Ich habe kürzlich angefangen, die Welt der Suche zu erforschen und versuche, ES als den Index für meine MongoDB zu verwenden. Ich habe es geschafft, sie erfolgreich zu integrieren, aber ich finde die Such-API ziemlich komplex und verwirrend. Die Java API ist auch nicht sehr hilfreich. Ich finde genaue Übereinstimmungen, aber wie mache ich Volltextsuchen? Hier ist mein Code:
%Vor% Ich habe keine Probleme, "name":"testname"
mit .setQuery(termQuery("name", "testname"))
zu finden, aber "name":"this is a test name"
funktioniert nicht mit dem obigen Beispiel. Was mache ich falsch?
Nachdem ich stundenlang im Internet gecrawlt habe, habe ich es mit Hilfe der javadocs herausgefunden. Am wichtigsten ist die Schnittstelle *QueryBuilder*
und ihre implementierenden Klassen. Ich habe FieldQueryBuilder
für meine Abfrage verwendet, was in der setQuery
Methode unten gezeigt wird.
Mit dem resultierenden Map-Objekt können Sie einfach die Methode get
aufrufen, um die relevanten Daten abzurufen.
Es sieht so aus, als ob termQuery in elasticsearch Lucens für seine Suchsyntax verwendet. Laut den Lucene-Dokumenten ist das Platzhalterzeichen "*" als erster Suchbegriff nicht zulässig.
Sehen Sie sich besser [Wildcard-Abfrage] an ( Ссылка )
Tags und Links java elasticsearch lucene