

So durchsuchen Sie alle Felder einer indizierten Entität in ElasticSeacrch mit hibernateSearch 6
Der
php-Editor Baicao führt eine Methode ein, mit der Hibernate Search 6 alle Felder von Indexentitäten in Elasticsearch durchsuchen kann. Hibernate Search 6 ist eine leistungsstarke Volltextsuchmaschine, die sich nahtlos in Elasticsearch integriert. Durch die Konfiguration und Verwendung von Hibernate Search 6 können Sie alle Felder einer Entität problemlos in Elasticsearch indizieren und effiziente Volltextsuchfunktionen implementieren. In diesem Artikel erfahren Sie, wie Sie Hibernate Search 6 konfigurieren und verwenden, um dieses Ziel zu erreichen. Wenn Sie die Schritte in diesem Artikel befolgen, können Sie schnell eine leistungsstarke Volltextsuchmaschine erstellen und die Suchfunktionen Ihrer Anwendung verbessern.
Frageninhalt
Ich habe die folgende Methode, um in Elasticsearch mithilfe der Hibernate-Such-API zu suchen. Ich übergebe den Abfragezeichenfolgenwert als „addresses.address_key:123“, der in „adresses.address_key“ gesucht wird, wie in den Feldern (addresses.address_key) angegeben.
So veranlassen Sie diese Methode, alle Eingaben in der Abfragezeichenfolge zu akzeptieren, zum Beispiel: Vorname:John und lassen Sie es in allen Volltextfeldern suchen.
elasticsearch-Version: 8.10 Hibernatesearch-Version: 6.2.2
public page<employee> searchemployee(string querystring) { try { searchsession searchsession = search.session(entitymanager); searchresult<employee> searchresult = searchsession.search(employee.class) .extension(elasticsearchextension.get()) .where(f -> f.simplequerystring().fields("addresses.address_key").matching(querystring)) .fetch(math.tointexact(page.getoffset()), page.getpagesize()); page<employee> pageresult = new pageimpl<>(searchresult.hits(), page, searchresult.total().hitcount()); return pageresult; } catch (searchexception pe) { throw pe; } }
Indizierte Entitätsklasse:
@Indexed(index = "employee") public class Employee { @FullTextField(name = "employee_key") private String employeeKey; @FullTextField(name = "first_name") private String firstName; @IndexedEmbedded(includeEmbeddedObjectId = true, includeDepth = 2) private Address addresses; } public class Address { @FullTextField(name = "address_key") private String addressKey; @FullTextField(name = "street_name") private String streetName; }
Workaround
Sie können mehrere Felder gezielt ansprechen , wenn Sie ein Prädikat definieren:
searchresult<employee> searchresult = searchsession.search(employee.class) .where(f -> f.simplequerystring() .fields("employee_key", "first_name", "addresses.address_key") .matching(querystring)) .fetch(math.tointexact(page.getoffset()), page.getpagesize());
Es gibt derzeit keine Option, nur auf „alle Textfelder“ abzuzielen; siehe https://www.php.cn/link/0b36451530d9491114523d4b66253837.
Außerdem unterstützt die einfache Abfragezeichenfolgensyntax keinen expliziten Verweis auf Felder in der Abfragezeichenfolge.
In diesem Beispiel:
f.simplequerystring().fields("addresses.address_key") .matching("addresses.address_key:123")
...Das Präfix „addresses.address_key:“ („addresses.address_key:123“) in der Suchzeichenfolge hat keine spezifische Bedeutung und wird nur als der im Dokument gefundene Begriff interpretiert.
Du könntest genauso gut so schreiben:
f.simplequerystring().fields("addresses.address_key") .matching("addresses.address_key 123")
Aber eigentlich denke ich, was Sie wollen, ist Folgendes:
f.simpleQueryString().fields("addresses.address_key") .matching("123")
Das obige ist der detaillierte Inhalt vonSo durchsuchen Sie alle Felder einer indizierten Entität in ElasticSeacrch mit hibernateSearch 6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

