Heim > Java > javaLernprogramm > Implementieren Sie die Volltextsuchfunktion mit Spring Boot und Elasticsearch

Implementieren Sie die Volltextsuchfunktion mit Spring Boot und Elasticsearch

WBOY
Freigeben: 2023-06-22 19:17:06
Original
1757 Leute haben es durchsucht

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'
Nach dem Login kopieren

}

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方法
Nach dem Login kopieren

}

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 ElasticsearchRepository {

List<Article> findByTitle(String title);
Nach dem Login kopieren

}

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 ElasticsearchRepository {

List<Article> searchArticle(String keyword);
Nach dem Login kopieren

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 List

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);
Nach dem Login kopieren

}

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage