Angesichts des explosionsartigen Informationswachstums wird es für Benutzer immer schwieriger, schnell an die benötigten Informationen zu gelangen. In diesem Fall ist die Bereitstellung einer Volltextsuchfunktion zu einer unverzichtbaren Funktion für jede Website und Anwendung geworden. In diesem Artikel stellen wir vor, wie Sie die Volltextsuchfunktion in einer Anwendung mithilfe des Spring Boot-Frameworks und der Elasticsearch-Datenbank implementieren.
Was ist Elasticsearch?
Elasticsearch ist eine verteilte Open-Source-Suchmaschine, die eine einfache Datenanalyse und Echtzeitsuche ermöglicht. Es basiert auf der Suchmaschinenbibliothek Apache Lucene und bietet eine RESTful-API, die Entwicklern einen einfachen Zugriff auf seine Funktionalität ermöglicht. Nahezu jede Art von Daten kann mit Elasticsearch gespeichert und durchsucht werden, einschließlich strukturierter, unstrukturierter und Geodaten.
Integration von Spring Boot und Elasticsearch
Spring Boot ist ein Framework zum Erstellen eigenständiger, produktionsbasierter Spring-Anwendungen. Es vereinfacht die Entwicklung von Spring-Anwendungen durch automatische Konfiguration und einen Konvention-über-Konfiguration-Ansatz. Für die Integration mit Elasticsearch bietet Spring Boot einige standardmäßige Konfigurations- und Anpassungsoptionen.
Zuerst müssen wir die Abhängigkeit von Elasticsearch zur Spring Boot-Anwendung hinzufügen. Fügen Sie die folgenden Abhängigkeiten in der Datei build.gradle hinzu:
Abhängigkeiten {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.5.0'
}
Nachdem wir diese Abhängigkeit hinzugefügt haben, können wir mithilfe des Repository-Musters der Spring Data Elasticsearch-Bibliothek problemlos Modelle und Indizes definieren. Spring Data Elasticsearch stellt uns viele Klassen und Methoden zur Verfügung, um Elasticsearch aus der Anwendung heraus zu betreiben. Wir müssen auch die Elasticsearch-Verbindungskonfiguration in der Konfigurationsdatei der Spring Boot-Anwendung festlegen. Wir können die folgende Konfiguration in der Datei application.properties hinzufügen:
// Legen Sie die Adresse und den Port von Elasticsearch fest.
spring.data.elasticsearch.cluster-nodes=localhost:9200
// Legen Sie den Benutzernamen und das Passwort von Elasticsearch fest ( ggf. Bei Authentifizierung)
spring.data.elasticsearch.properties.username=elasticsearch
spring.data.elasticsearch.properties.password=password
Indizes und Typen definieren
Bevor wir Elasticsearch für die Volltextsuche verwenden, müssen wir dies zuerst tun Definieren Sie Indizes und Typen. In Elasticsearch entspricht ein Index einer Datenbank und ein Typ entspricht einer Tabelle in der Datenbank. Wir können die in Spring Data Elasticsearch bereitgestellten Anmerkungen verwenden, um unsere Entitäten und Indizes zu definieren. Hier ist ein einfaches Beispiel:
// Entität definieren
@Document(indexName = "articles")
public class Article {
// 定义id @Id private String id; // 定义标题 @Field(type = FieldType.Text) private String title; // 定义内容 @Field(type = FieldType.Text) private String content; // 定义创建时间 @Field(type = FieldType.Date) private Date createTime; // 省略get和set方法
}
Im obigen Beispiel verwenden wir die @Document-Annotation, um unsere Entitäten und Indizes zu definieren . Wir haben einen Index mit indexName als Artikeln erstellt und die @Field-Annotation verwendet, um die Felder in unseren Entitäten zu kommentieren, die in Elasticsearch gespeichert werden müssen. Als Nächstes können wir eine ArticleRepository-Schnittstelle erstellen, die von der ElasticsearchRepository-Klasse erbt. Diese Schnittstelle kann durch Vererbung eine große Anzahl von Datenabfragemethoden bereitstellen, die auf Elasticsearch basieren. Das Folgende ist ein einfaches Beispiel:
public interface ArticleRepository erweitert ElasticsearchRepository42407456a0fce5117f6e0cdb707509c6 {
List<Article> findByTitle(String title);
}
Für die im obigen Beispiel definierte ArticleRepository-Schnittstelle erstellt Spring Data Elasticsearch automatisch die Service-Layer-Schnittstelle, die implementiert wird Konkrete Entitätsklassen werden für uns automatisch in den Spring-Container eingefügt, wenn die Anwendung gestartet wird. In dieser Serviceschnittstelle haben wir eine findByTitle-Methode definiert, mit der Artikel anhand ihrer Titel abgefragt werden. Bei der tatsächlichen Verwendung können wir Elasticsearch problemlos über ArticleRepository bedienen, einschließlich Hinzufügen, Löschen, Abfragen usw.
Implementierung der Volltextsuchfunktion
Nachdem wir Entitäten, Indizes und Typen definiert haben, können wir Volltextsuchvorgänge für sie starten. In Elasticsearch wird die Volltextsuchfunktion durch die Erstellung von Abfragen implementiert. Beim Abfragen wird eine Suche innerhalb bestimmter Indizes, Typen und Felder durchgeführt. Hier ist ein einfaches Beispiel:
public interface ArticleRepository erweitert ElasticsearchRepository42407456a0fce5117f6e0cdb707509c6 {
List<Article> searchArticle(String keyword);
In diesem Beispiel definieren wir eine searchArticle-Methode, um nach Artikeln zu suchen. Bei dieser Methode können wir den QueryBuilder-Builder von Elasticsearch verwenden, um Abfragebedingungen wie folgt zu erstellen:
public List59da28f5dfb08cc4320eedd48bbc94b6 searchArticle(String keyword) {
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder(); builder.withQuery(QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery("title", keyword)) .should(QueryBuilders.matchQuery("content", keyword))); return elasticsearchTemplate.queryForList(builder.build(), Article.class);
}
Hier verwenden wir einen NativeSearchQueryBuilder, um eine Abfrage zu erstellen. Wir können QueryBuilders verwenden, um verschiedene Arten von Abfragen zu erstellen. Hier verwenden wir eine boolesche Abfrage, um Artikel zu finden, deren Titel und Inhalt Schlüsselwörter enthalten. Nachdem die Abfrage erstellt wurde, können wir elasticsearchTemplate.queryForList() verwenden, um die Abfrage auszuführen und die Ergebnisse zu erhalten. Natürlich können wir auch verschiedene von Spring Data Elasticsearch bereitgestellte Abfragemethoden verwenden, um Abfragevorgänge durchzuführen.
Zusammenfassung
In diesem Artikel stellen wir vor, wie Sie die Volltextsuchfunktion mit Spring Boot und Elasticsearch implementieren. Wir haben zunächst die Grundkenntnisse von Elasticsearch und die Integrationsmethode von Spring Boot und Elasticsearch vorgestellt und anschließend ausführlich erklärt, wie Indizes und Typen definiert und die Volltextsuchfunktion implementiert werden. Nach dem Studium dieses Artikels können wir die Volltextsuchfunktion problemlos in unsere Spring Boot-Anwendung integrieren, sodass Benutzer die erforderlichen Informationen schneller finden.
Das obige ist der detaillierte Inhalt vonImplementieren Sie die Volltextsuchfunktion mit Spring Boot und Elasticsearch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!